eydz_mfj @ 2017-08-22 11:19:25
#include <iostream>
using namespace std;
int main()
{
float n,s;
int k;
cin>>k;
for(n=1;;n++)
{
s+=1/n;
if(s>k)
{
cout<<n<<endl;
return 0;
}
}
return 0;
}
//谢谢大佬们
by Night_Aurora @ 2017-08-22 11:22:38
s没有赋初值
应该 float n,s=0;
by Night_Aurora @ 2017-08-22 11:23:39
还有n应该用int
顺便把s+=1/n改成s+=1.0/n
by eydz_mfj @ 2017-08-22 11:26:37
@ Night_Aurora
谢谢,谢谢。
不太明白如果n用int那1/n不会出事儿吗
by Night_Aurora @ 2017-08-22 11:27:48
两个int相运算结果强制转换成int
所以要改成1.0/n来保证是浮点数运算
by eydz_mfj @ 2017-08-22 11:28:29
okok懂啦
谢谢!
by eydz_mfj @ 2017-08-22 11:29:41
#include <iostream>
using namespace std;
int main()
{
float s=0;
int k,n;
cin>>k;
for(n=1;;n++)
{
s+=1.0/n;
if(s>k)
{
cout<<n<<endl;
return 0;
}
}
return 0;
}
//改了一下子
好像还是炸了 60分 第三组和第五组测试数据没过
by Night_Aurora @ 2017-08-22 11:30:10
你拿60分估计是精度的原因
把float改成double吧
以后习惯用double别用floa
by eydz_mfj @ 2017-08-22 11:32:30
好,好
by eydz_mfj @ 2017-08-22 11:40:59
过了过了
谢谢谢谢
by 我是真的牛逼 @ 2017-08-22 11:56:26
#include<iostream>
using namespace std;
int main()
{
int k,n=0;
double sn=0;
cin>>k;
while(k>=1&&k<=15&&k>=sn)
{
n++;
sn+=1.0/n;
}
cout<<n;
return 0;
}