首页 > 其他 > 详细

洛谷p1035

时间:2018-12-01 17:59:59      阅读:176      评论:0      收藏:0      [点我收藏+]

题目描述

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K

现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K

输入输出格式

输入格式:

 

一个正整数K

 

输出格式:

 

一个正整数N

 

 

 

做此题时思路非常清晰:利用循环求出n输出即可。但实际操作时遇到了一些问题。

1. 若用for循环,不知结束的条件,故需尽可能大的找出i的值,即for(int i=1;i<=100000000;i++),然后求出Sn>K时的最小的n后进行break;

但我们可以直接使用while循环,循环条件写Sn<K(注)

2.第一次提交时,发现是WA,遂参考题解,发现Sn应为浮点数类型而非整型,因为有分数

3.第二次提交时,发现1/i不是浮点数,故应改为1.0/i

注:条件应为Sn<=K,因为当K=1时,应输出2而不是3

代码如下:

#include<stdio.h>
int main()
{
int k,i=1;
double sum=0.000000;
scanf("%d",&k);
while(sum<=k)
{
sum=sum+1.0/i;
i++;
}
printf("%d",i-1);
return 0;
}

洛谷p1035

原文:https://www.cnblogs.com/CrossingX/p/10050199.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!