1 条题解
-
0
[NOIP 2002 普及组] 级数求和
知识点
循环、浮点数、累加
解题思路
依次累加1/i,直到和严格大于输入的K,输出当前项数。
正确性说明
各项均为正数,部分和严格递增;第一次超过K之前都不符合要求,第一次超过时就是最小项数。
易错点
1.0/i必须采用浮点除法;题目要求严格大于K,因此循环条件为sum<=K。
复杂度
设答案为n,时间O(n),空间O(1)。
参考代码(GNU C++17)
#include<bits/stdc++.h> using namespace std; int main(){ int k,n=0;cin>>k;double sum=0; while(sum<=k){++n;sum+=1.0/n;} cout<<n<<'\n'; }
- 1