在刷题的过程中,遇到了一些常见的问题,比如说明明带入前几个数还可以,就是没有accept,
其中可能有精度不够的问题
比方说这题
题目描述
已知:Sn=1+12+13+…+1nSn=1+21+31+…+n1。显然对于任意一个整数 kk,当 nn 足够大的时候,Sn>kSn>k。
现给出一个整数 kk,要求计算出一个最小的 nn,使得 Sn>kSn>k。
输入格式
一个正整数 kk。
输出格式
一个正整数 nn。
输入输出样例
输入 #1复制
1
输出 #1复制
2
说明/提示
【数据范围】
对于 100%100% 的数据,1≤k≤151≤k≤15。
【题目来源】
NOIP 2002 普及组第一题
最开始的代码
#include<stdio.h>
int main()
{
float sum = 1;
int k, a = 1;
scanf("%d", &k);
while (sum<=k) {
a = a+1;
sum = sum + 1.0/a;
}
printf("%d\n", a);
return 0;
}
经过修正精度的代码
#include<stdio.h>
int main()
{
double sum = 1;
int k, a = 1;
scanf("%d", &k);
while (sum<=k) {
a = a+1;
sum = sum + 1.0/a;
}
printf("%d\n", a);
return 0;
}