jadekwok @ 2019-11-14 16:48:03
#include <stdio.h>
int main()
{
int k,n=1;
float Sn=0;
scanf("%d",&k);
while(k)
{
Sn+=1.0/n;
if(Sn>k)
break;
n++;
}
printf("%d",n);
return 0;
}
已经尝试给所有带Sn处旁边的数值乘1.0 但也不可以 大神求解
by 熊崇文 @ 2019-11-14 16:49:17
#include<iostream>
using namespace std;
int main(){
double a=0,k,s=0.0;
cin>>k;
while(a<=k){
s++;
a+=double(1.00/s);
}
cout<<s<<endl;
return 0;
}
by 林聪 @ 2019-11-14 16:49:46
@jadekwok 把float改成double,float精度太低了
by jadekwok @ 2019-11-14 16:59:04
@熊崇文 超级感谢!
by jadekwok @ 2019-11-14 16:59:20
@林聪 超级感谢!
by yinlei @ 2019-11-14 18:11:40
@林聪 为什么精度不够就要报错???/
by 林聪 @ 2019-11-14 18:46:31
@yinlei 没报错啊,只是AC不了
by yinlei @ 2019-11-14 23:28:09
@林聪 那为什么这道题要这么高的精度啊?
by 林聪 @ 2019-11-14 23:31:11
@yinlei 因为输入15的时候答案是1835421,你说用不用高精度
by yinlei @ 2019-11-14 23:56:39
@林聪 哇!流弊!!!!!!
by yinlei @ 2019-11-15 00:01:43
@林聪 大神 加私信!!!!