藍橋杯 ALGO-45 演算法訓練 調和數列問題
阿新 • • 發佈:2018-12-30
演算法訓練 調和數列問題
時間限制:1.0s 記憶體限制:512.0MB
問題描述
輸入一個實數x,求最小的n使得,1/2+1/3+1/4+...+1/(n+1)>=x。
輸入的實數x保證大於等於0.01,小於等於5.20,並且恰好有兩位小數。你的程式要能夠處理多組資料,即不停地讀入x,如果x不等於0.00,則計算答案,否則退出程式。
輸出格式為對於一個x,輸出一行n card(s)。其中n表示要計算的答案。
輸入格式
分行輸入x的具體數值
輸出格式
分行輸出n的數值,格式為n card(s)
樣例輸入
1.00
3.71
0.04
5.19
0.00
樣例輸出
3 card(s)
61 card(s)
1 card(s)
273 card(s)
#include <iostream> #include <cmath> using namespace std; int main(int argc, char *argv[]) { double x,sum; double e=1e-8; while(cin>>x){ if(fabs(x)<=e) break; int n=2; sum=0; while(sum<x){ sum+=1.0/n; n++; } cout<<n-2<<" card(s)"<<endl; } return 0; }