1. 數據統計
【問題描述】
輸入N個整數,求出它們的最小值、最大值和平均值(保留3位小數)。輸入保證這些數都是不超過1000的整數。(1<=N<=1000)
【樣例輸入】
8
2 8 3 5 1 7 3 6
【樣例輸出】
1 8 4.375
#include <iostream> #include <iomanip> using namespace std; int main(){ int n, m, sum = 0, min, max, k; cin >> n; k=n; cin >> m; min = max = sum = m; while(n-1>0){ cin >> m; sum += m; if(min>m){ min=m; } if(max<m){ max=m; } n--; } cout << min << " " << max << " "; cout << fixed << setprecision(3) << (double)sum/k << endl; return 0; }
2. 角谷猜想
【問題描述】
所謂角谷猜想,是指對於任意一個正整數,如果是奇數,則乘3加1,如果是偶數,則除以2,得到的結果再按照上述規則重復處理,最終總能夠得到1。如,假定初始整數為5,計算過程分別為16、8、4、2、1。
程序要求輸入一個整數,將經過處理得到1的過程輸出來。
輸入:一個正整數N(N <= 2,000,000)
輸出:從輸入整數到1的步驟,每一步為一行,每一部中描述計算過程。最后一行輸出"End"。如果輸入為1,直接輸出"End"。
【樣例輸入】
5
【樣例輸出】
5*3+1=16
16/2=8
8/2=4
4/2=2
2/2=1
End
#include<iostream> using namespace std; int main(){ long long int n; cin>>n; while(n>1){ if(n%2){ n=3*n+1; cout<<(n-1)/3<<"*3+1="<<n<<endl; }else{ n=n/2; cout<<2*n<<"/2="<<n<<endl; } } cout<<"End"<<endl; return 0; }
1. 小玉游泳
【問題描述】
小玉開心地在游泳,可是她很快難過的發現,自己的力氣不夠,游泳好累哦。已知小玉第一步能游2米,可是隨着越來越累,力氣越來越小,她接下來的每一步都只能游出上一步距離的98%。現在小玉想知道,如果要游到距離x米的地方,她需要游多少步呢。請你編程解決這個問題。
輸入格式:輸入一個數字(不一定是整數,小於100m),表示要游的目標距離。
輸出格式:輸出一個整數,表示小玉一共需要游多少步。
【樣例輸入】
4.3
【樣例輸出】
3
#include <iostream> using namespace std; int main(){ double m, n, l=2, step=0; cin >> m; while(n<m){ step++; n+=l; l*=0.98; } cout << step << endl; return 0; }
2. 球彈跳高度的計算
【問題描述】
一球從某一高度落下(整數,單位米),每次落地后反跳回原來高度的一半,再落下。編程計算氣球在第10次落地時,共經過多少米? 第10次反彈多高?
輸入:輸入一個整數h,表示球的初始高度。
輸出:輸出包含兩行:
第1行:到球第10次落地時,一共經過的米數。
第2行:第10次彈跳的高度。
注意:結果可能是實數,結果用double類型保存。
【樣例輸入】
20
【樣例輸出】
59.9219
0.0195312
#include <iostream> #include <iomanip> using namespace std; int main(){ double h, sum, n=10; cin >> h; sum=h; while(n-1>0){ sum+=h; h/=2; n--; } cout << fixed << setprecision(4) << sum << endl; cout << fixed << setprecision(4) << h/2 << endl; return 0; } //思路:球第一次落地經過h,然后彈起高度為二分之一h, //彈起再落地所經過的路徑還是h
3. 金幣
【問題描述】
國王將金幣作為工資,發放給忠誠的騎士。第一天,騎士收到一枚金幣;之后兩天(第二天和第三天)里,每天收到兩枚金幣;之后三天(第四、五、六天)里,每天收到三枚金幣;之后四天(第七、八、九、十天)里,每天收到四枚金幣……這種工資發放模式會一直這樣延續下去:當連續N天每天收到N枚金幣后,騎士會在之后的連續N+1天里,每天收到N+1枚金幣(N為任意正整數)。
你需要編寫一個程序,確定從第一天開始的給定天數內,騎士一共獲得了多少金幣。
輸入:一個整數(范圍1到10000),表示天數。
輸出:騎士獲得的金幣數。
【樣例輸入】
6
【樣例輸出】
14
#include <iostream> using namespace std; int main(){ int n, sum=0; int i=0; cin >> n; while(n>0){ i++; sum+=i*i; n-=i; } sum += n*i; cout << sum << endl; return 0; }