Code[vs]3064 求和(模拟)
2015-02-04 23:51
369 查看
3064 求和
时间限制: 1 s空间限制: 32000 KB
题目等级 : 青铜 Bronze
题解
查看运行结果
题目描述 Description
输入一个数x(x
<= 10000),求数n使的S= 1+1/2+1/3+…+1/n>=x的最小n值。但如果在n
> 5000000时都无法满足,则输出“Error!”(没有引号)
输入描述 Input Description
只有一个数x
输出描述 Output Description
如果数n使的S=
1+1/2+1/3+…+1/n>=x的最小n值小于5000000,则输出一个数n
否则输出“Error!”(没有引号)
样例输入 Sample Input
输入样例1
10
输入样例2
1000
样例输出 Sample Output
输出样例1
12367
输出样例2
Error!
解题思路:
很水的模拟题,只要按照题目中说的要求去写就好了,慢慢来,for( i = 1;;i++ )这个技巧要学会,但是什么时候结束这个for循环呢,这就要看你怎么调整你的姿势了。。。
QAQ,按照我的来就好了,两种情况下会打破for循环。。。
1. i > 500000。
2.找到了最小的n。
好了,看代码吧。
代码:
# include<cstdio> # include<iostream> using namespace std; const double eps = 1e-8; int main(void) { int x; while ( cin>>x ) { int flag = 0; int n; double sum = 0; for ( int i = 1;;i++ ) { sum+=(1.0/i); if ( i > 5000000 ) { if ( sum-x < eps ) { flag = 1; break; } } if ( sum >= x ) { n = i; break; } } if ( flag ) { cout<<"Error!"<<endl; } else { cout<<n<<endl; } } return 0; }
相关文章推荐
- 找规律+模拟 之 codevs 1160 蛇形矩阵
- CODE[VS] 1082 线段树练习 3 (区间修改、区间求和)
- codevs天梯 十进制转N进制 暴力模拟
- 找规律+模拟 之 codevs 1160 蛇形矩阵
- 【BZOJ2005】【codevs1937】能量采集,数论练习之二维公约数求和
- CODEVS1067:机器翻译(模拟水题)
- codevs 1026 逃跑的拉尔夫 模拟
- 【codevs1690】开关灯 线段树 区间修改+区间求和(标记)
- CODE[VS] 青铜Bronze 整数处理 1202:求和
- CODE[VS] NO.1083 Cantor表(类似蛇形矩阵,模拟,找规律)
- CodeVS 1107 等价表达式【NOIP2005】【模拟
- code[vs]1202 求和
- codevs 1164 || NOIP 2007 统计数字 模拟 解题报告
- Code[vs] 3027 线段覆盖 2(dp求和)
- 【基础练习】【数论/模拟】codevs1670 无穷的序列题解
- [NOIP2005][CODEVS1106]篝火晚会(模拟+数学相关)
- 【基础练习】【模拟】codevs1704 卡片游戏题解
- codevs天梯 m进制转十进制 模拟
- CODEVS 1007 级数求和 C语言描述
- [NOIP模拟][dp][codevs]p1401逆序对统计