NOIP 2002 普及组 复赛 级数求和
1.原以为是菜题,手到擒来,提交40,附上40分代码,引以为戒
#include <stdio.h>
double s(int n){
int i;
double ans=0;
for(i=1;i<=n;i++)
ans+=1.0/i;
return ans;
}
int main(){
int k;
int i;
scanf("%d",&k);
i=1;
while(1){
if(s(i)>k)
break;
i++;
}
printf("%d\n",i);
return 0;
}
2.看过他人代码后,发现,在s函数这块太耗时,规范的反作用。
3.立马提交AC。
附上AC代码,编译环境Dev-C++4.9.9.2
#include <stdio.h>
int main(){
int k;
int i;
double ans;
scanf("%d",&k);
ans=1;
i=1;
while(1){
if(ans>k)
break;
i++;
ans+=1.0/i;
}
printf("%d\n",i);
return 0;
}