1918:【02NOIP普及组】级数求和
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 6723 通过数: 3960
【题目描述】
已知:Sn=1+12+13+…+1n。显然对于任意一个数K,当n足够大的时候,Sn大于K。 现给出一个整数K(1≤K≤15),要求计算出一个最小的n,使得Sn>K。
【输入】
一行,一个整数K。
【输出】
一行,一个整数n。
【输入样例】
1
【输出样例】
2
一,
#include
using namespace std;
int main()
{
int k,n;
float s=0;
cin>>k;
for(n=1;s<=k;n++)
{
s+=1.0/n;
}
cout<
return 0;
}
二,
#include
using namespace std;
int main()
{
int k,n;
double s=0;
cin>>k;
for(n=1;s<=k;n++)
{
s+=1.0/n;
}
cout<
return 0;
}
一,
未通过
测试点 结果 内存 时间
测试点1 答案正确 604KB 1MS
测试点2 答案正确 604KB 2MS
测试点3 答案正确 604KB 1MS
测试点4 答案正确 596KB 1MS
测试点5 答案正确 604KB 2MS
测试点6 答案正确 604KB 2MS
测试点7 答案正确 604KB 2MS
测试点8 答案错误 596KB 2MS
测试点9 答案错误 600KB 4MS
测试点10 答案错误 604KB 9MS
二,
通过
测试点 结果 内存 时间
测试点1 答案正确 588KB 1MS
测试点2 答案正确 580KB 2MS
测试点3 答案正确 588KB 2MS
测试点4 答案正确 592KB 2MS
测试点5 答案正确 588KB 2MS
测试点6 答案正确 584KB 1MS
测试点7 答案正确 588KB 2MS
测试点8 答案正确 576KB 2MS
测试点9 答案正确 580KB 5MS
测试点10 答案正确 588KB 9MS
如上一,二
明白单,双精度差别
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k,i;
double sn=0;
cin>>k;
for(i=1;i<=1835421;i++)
{
sn=sn+1.0/i;
if(sn>k)
{
cout<<i<<endl;
break;
}
}
return 0;
}
https://blog.csdn.net/m0_66603329/article/details/126304097
(可以看看我这道题的题解)