CPP2022-09-循环结构03(下)

简介: CPP2022-09-循环结构03

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*1N*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. }
相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
21.C语言:if语句编译选择结构举例
21.C语言:if语句编译选择结构举例
47 0
|
C语言
CPP2022-07-循环结构01(上)
CPP2022-07-循环结构01
187 1
CPP2022-14-递归(下)
CPP2022-14-递归(下)
112 0
|
5月前
|
C语言
C语言循环结构详解:for、while、do while、break与continue
C语言循环结构详解:for、while、do while、break与continue
152 0
|
5月前
|
C语言
C语言条件判断:if、else、else if 和 switch 详解
C语言条件判断:if、else、else if 和 switch 详解
296 0
|
编译器 C语言
C语言循环坑 -- continue的坑
C语言循环坑 -- continue的坑
108 0
C语言循环坑 -- continue的坑
CPP2022-07-循环结构01(下)
CPP2022-07-循环结构01(下)
123 1