Liyes_ @ 2016-04-05 19:14:19
#include<stdio.h>
#include<stdlib.h>
int mian()
{
double Sn,a,i;
scanf("%lf",&a);
Sn=0;
for(i=1;i++;i<100000)
{
Sn+=Sn+1/i;
if(Sn>=a)
break;
}
printf("%lf",Sn);
return 0;
}
by kkksc03 @ 2016-04-05 21:37:02
@noip丿灬少帥丨你真的认为答案一定小于100000?
by cn_lemon @ 2016-07-27 10:28:57
咳咳,int mian是什么
by cn_lemon @ 2016-07-27 10:29:52
而且i最好定义int
by Aimyhtixela @ 2016-07-30 13:51:13
其实也不是什么i最好定义int,定义成double 也可以
但是建议用 long long
我就是用long long 过的
看看我的代码:
#include <iostream>
using namespace std;
int main(){
double s=0;
int k;
long long i;
cin>>k;
const long long Guess_max=999999999999999;
for (i=1;i<=Guess_max;++i){
s=s+1.0/i;
if (s>k) break;
}
cout<<i<<endl;
return 0;
}
//耗时9秒,如果想耗时少一点的话,建议用while
//看看我的while 版:
#include <iostream>
using namespace std;
int main(){
int k,i=0;
double s=0;
cin>>k;
while (s<=k){
++i;
s+=1.0/i;
}
cout<<i<<endl;
return 0;
}
by Aimyhtixela @ 2016-07-30 14:02:41
况且它让你输入的也因该是i 呀,
你还可以看看它的样本,
输入1 ,应该是2,
你得到的数字是1.33333,明显打印的方向就不对,还有,你知道+=是什么意思吗,你那个Sn+=Sn+1/i;,明显重复了,
顺便说一下,那个a+=b就是a=a+b,你那个Sn+=Sn+1/i,就变成了Sn=Sn+Sn+1/i;
你那个循环的格式也错了,第2个和第3个反了
//修改后的你的代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
double Sn,a,i;
scanf("%lf",&a);
Sn=0;
for(i=1;i<9999999;++i)
{
Sn+=1.0/i;
if(Sn>a)
break;
}
printf("%d",(int)i);//也可以用上头文件iomanip,在setprecision(0)<<fixed;2333 不过貌似你是C党,那你就用强转吧
return 0;
}
by ChthollyMeow @ 2020-05-31 18:10:30
@翼德天尊
by 翼德天尊 @ 2020-05-31 18:11:08
@_珂朵莉 。。。你跳的有点快啊……