信息学奥赛一本通 1087:级数求和 | 1918:【02NOIP普及组】级数求和 | OpenJudge NOI 1.5 27
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1087:级数求和 | 1918:【02NOIP普及组】级数求和 | OpenJudge NOI 1.5 27
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1087:級數求和
ybt 1918:【02NOIP普及組】級數求和
OpenJudge NOI 1.5 27:級數求和
【題目考點】
1. 循環、求和
【解題思路】
- 設加和變量s
- n從1開始循環,每次循環將1/n加入s中,而后n增加1
- 當發現s > k時,跳出循環。
- 很明顯,此時n的值即為要求的最小的n,記此值為nm。
- 當n < nm時,無法滿足s > k
- 當n > nm時,可以滿足s > k,但nm比n更小。
所以nm是要求的結果。
【題解代碼】
解法1:用while循環
#include<bits/stdc++.h> using namespace std; int main() {double s = 0;//s:題中的Sn,k:題中的K,n:題中的nint n = 0, k;cin>>k;while(s <= k){n++; //n從1開始參與運算s += 1.0 / n;//1.0/n可以避免進行整除運算,使表達式是值是浮點型量}cout<<n;return 0; }解法2:用for循環
#include<bits/stdc++.h> using namespace std; int main() {double s = 0;//s:題中的Sn,k:題中的K,n:題中的nint n, k;cin>>k;for(n = 1; s <= k; ++n)s += 1.0 / n;//1.0/n可以避免進行整除運算,使表達式是值是浮點型量cout<<n - 1;//跳出前n又多加了一次1,將這個1減掉,就是最終結果return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1087:级数求和 | 1918:【02NOIP普及组】级数求和 | OpenJudge NOI 1.5 27的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 2051:【例3.1】
- 下一篇: 信息学奥赛一本通 1060:均值 | O