还是很简单的……
首先,输入k,再定义一个双精度浮点数s,不停的循环
for(i=1;;i++)
每次循环加上1.0/i
s+=1.0/i;
如果大于k就停止循环,并输出,也可以输出后直接结束程序
写法一:
if(s>k)
{
printf("%d\n",i);
return 0;
}
写法二:
if(s>k) break;
printf("%d\n",i);
这样用一重循环就能解决这个问题
代码:
理解版:
#include<iostream>
int main()
{
int k,i;//i用来记录使s大于k时的那个数
double s=0;
scanf("%d",&k);//输入
for(i=1;;i++)
{
s+=1.0/i;
if(s>k)//判断s是否大于k
{
printf("%d\n",i);//输出
return 0;//停止程序
}
}
}
抄袭版:
#include<iostream>
int main()
{
int k,i;
double s=0;
scanf("%d",&k);
for(i=1;;i++)
{
s+=1.0/i;
if(s>k)
{
printf("%d\n",i);
return 0;
}
}
}