7-6 兔子繁衍问题
分数 10
全屏浏览题目
切换布局
作者 徐镜春
单位 浙江大学
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
1. #include <bits/stdc++.h> 2. using namespace std; 3. int n,a=1,b,c,cnt; 4. int main() 5. { 6. cin>>n; 7. while(c<n) 8. { 9. cnt++; 10. c+=b; 11. b=a; 12. a=c; 13. } 14. cout<<cnt-1; 15. }
斐波那契数列解法
1. #include <bits/stdc++.h> 2. using namespace std; 3. int n,a=1,b,c,cnt; 4. int main() 5. { 6. long long int n; 7. long long int a[10000]; 8. a[0]=1000000000000;a[1]=1;a[2]=1; 9. int min=0; 10. cin>>n; 11. if(n==1) 12. { 13. cout<<min+n<<endl; 14. } 15. else if(n>1&&n<5) 16. { 17. cout<<min+n+1<<endl; 18. } 19. else 20. { 21. for(int i=3;i<=n;i++) 22. { 23. a[i]=a[i-1]+a[i-2]; 24. if(a[i]>=n) 25. { 26. if(a[i]<a[min]) 27. { 28. min=i; 29. } 30. } 31. } 32. cout<<min<<endl; 33. } 34. return 0; 35. }
7-7 高空坠球
分数 10
全屏浏览题目
切换布局
作者 C课程组
单位 浙江大学
皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?
输入格式:
输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。
输出格式:
在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。
输入样例:
33 5
输出样例:
94.9 1.0
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. double high=0,n=0,sum=0; 6. cin>>high>>n; 7. double a=high; 8. if(n>0) 9. { 10. for(int i=1;i<=n;i++) 11. { 12. sum=sum+high*2; 13. high=high/2; 14. } 15. cout<<fixed<<setprecision(1)<<sum-a<<" "<<fixed<<setprecision(1)<<high<<endl; 16. } 17. else if(n==0) 18. { 19. cout<<fixed<<setprecision(1)<<n<<" "<<fixed<<setprecision(1)<<n<<endl; 20. } 21. return 0; 22. }
7-8 打印九九口诀表
分数 10
全屏浏览题目
切换布局
作者 徐镜春
单位 浙江大学
下面是一个完整的下三角九九口诀表:
1. 1*1=1 2. 1*2=2 2*2=4 3. 1*3=3 2*3=6 3*3=9 4. 1*4=4 2*4=8 3*4=12 4*4=16 5. 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 6. 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 7. 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 8. 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 9. 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 10.
本题要求对任意给定的一位正整数N
,输出从1*1
到N*N
的部分口诀表。
输入格式:
输入在一行中给出一个正整数N
(1≤N
≤9)。
输出格式:
输出下三角N*N
部分口诀表,其中等号右边数字占4位、左对齐。
输入样例:
4
输出样例:
1. 1*1=1 2. 1*2=2 2*2=4 3. 1*3=3 2*3=6 3*3=9 4. 1*4=4 2*4=8 3*4=12 4*4=16
嵌套法
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int i,j,n; 6. cin>>n; 7. for(i=1;i<=n;i++) 8. { 9. for(j=1;j<=i;j++) 10. { 11. cout<<j<<"*"<<i<<"="<<setw(4)<<left<<i*j; 12. if(i==j) 13. { 14. cout<<endl; 15. } 16. } 17. } 18. return 0; 19. }
字符串偷鸡法
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. string a[]={ 6. "1*1=1 ", 7. "1*2=2 2*2=4 ", 8. "1*3=3 2*3=6 3*3=9 ", 9. "1*4=4 2*4=8 3*4=12 4*4=16 ", 10. "1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 ", 11. "1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 ", 12. "1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 ", 13. "1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 ", 14. "1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 " 15. } ; 16. int n; 17. cin>>n; 18. for(int i=0;i<n;i++) 19. { 20. cout<<a[i]<<endl; 21. } 22. 23. return 0; 24. }
7-9 穷举问题-搬砖
分数 10
全屏浏览题目
切换布局
作者 杨起帆
单位 浙大城市学院
某工地需要搬运砖块,已知男人一人搬3
块,女人一人搬2
块,小孩两人搬1
块。如果想用n
人正好搬n
块砖,问有多少种搬法?
输入格式:
输入在一行中给出一个正整数n
。
输出格式:
输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c
"的格式,输出男人的数量cnt_m
,女人的数量cnt_w
,小孩的数量cnt_c
。请注意,等号的两侧各有一个空格,逗号的后面也有一个空格。
如果找不到符合条件的方案,则输出"None
"
输入样例:
45
输出样例:
1. men = 0, women = 15, child = 30 2. men = 3, women = 10, child = 32 3. men = 6, women = 5, child = 34 4. men = 9, women = 0, child = 36
1. #include<bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. int n; 6. bool flag=0; 7. cin>>n; 8. for(int i=0;i<=n;i++) 9. { 10. for(int j=0;j<=n;j++) 11. { 12. for(int k=0;k<=2*n;k=k+2) 13. { 14. if((i*3+j*2+k/2==n)&&(i+j+k==n)) 15. { 16. cout<<"men = "<<i<<", women = "<<j<<", child = "<<k<<endl; 17. flag=1; 18. } 19. } 20. } 21. } 22. if(flag!=1) 23. { 24. cout<<"None"; 25. } 26. return 0; 27. }
7-10 用格里高利公式求给定精度的PI值
分数 10
全屏浏览题目
切换布局
作者 颜晖
单位 浙大城市学院
本题要求编写程序,计算序列部分和 4∗(1−1/3+1/5−1/7+...) ,直到最后一项的绝对值小于给定精度eps
。
输入格式:
输入在一行中给出一个正实数eps
。
输出格式:
在一行中按照“Pi = pi
”的格式输出部分和的值pi
,精确到小数点后四位。题目保证输入数据和计算结果均不超过双精度范围。
输入样例1:
0.0001
输出样例1:
Pi = 3.1418
输入样例2:
0.2
输出样例2:
Pi = 2.8952
1. #include <bits/stdc++.h> 2. using namespace std; 3. int main() 4. { 5. double eps,ans=0,i=1,flag=1; 6. cin>>eps; 7. while(1/i>=eps) 8. { 9. ans+=4*flag/i; 10. flag*=-1; 11. i+=2; 12. } 13. ans+=4*flag/i; 14. cout<<"Pi = "<<fixed<<setprecision(4)<<ans<<endl; 15. }