洛谷p1035简单思路
//记录自己的码字之路
题目描述
已知:S_n= 1+1/2+1/3+…+1/n,显然对于任意一个整数 k,当 n 足够大的时候,S_n>k。现给出一个整数 k,要求计算出一个最小的 n,使得 S_n>k
输入格式
一个正整数 kk。
输出格式
一个正整数 nn。
简单分析
这算是一道相对基础的循环考察题,但是里面任然存在很多坑。。。
- 首先,看到分数线,就发现可能会出现小数,所以选择double类型变量
- 如果想到double,那么后面应该就没什么大问题了,但是细节还是要注意
- 细节详细看注释
废话不多说,上代码
#include <bits/stdc++.h>//万能头文件
using namespace std;
int main(){
double a=0.0000;//定义的时候最好带上小数点
int n,ans=0;//记得初始化
cin>>n;
for(int i=1;;i++){//中间的循环终止条件可以不填,但是一定要记得break
a+=1.0000/i;//这里必须加小数点,否则结果永远是0
ans++;//计数
if(a>n) break;//终止条件
}
cout<<ans;
return 0;
}
看完代码记得自己再敲一遍!!!