题目描述
已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。
现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。
输入输出格式
输入格式:
一个正整数K。
输出格式:
一个正整数N。
输入输出样例
输入样例#1:
输入样例#1:
1
输出样例#1:
2
说明
double
循环写法
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int m;
double i=0,s=0;
scanf("%d",&m);
while(s<=m)
{
i++;
s+=1/i;
}
printf("%.0f",i);
return 0;
}
递归写法
扫描二维码关注公众号,回复:
2438231 查看本文章
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int m;
double s;
int skcj(double n)
{
s=s+(1/n);
if(s>m)
return n;
return skcj(n+1);
}
int main()
{
cin>>m;
printf("%d",skcj(1));
return 0;
}