急求下面三道题的源代码 有输入输出要求 求大神帮忙.解决办法
急求下面三道题的源代码 有输入输出要求 求大神帮忙..
一.上楼梯
时间限制: 1000ms
内存限制: 10000kB
描述
一个人上楼梯,他可以一步上1级,可以一步上2级,也可以
一步上3级,现在楼梯一共有N级,有多少种不同的上法
(注意:当上到还剩下1级就到达时,不能直接上2级且不能
直接上3级,当上到还剩下2级就到达时,不能直接上3级),
输入
输入第一个数是M,表示M组测试数据,接下来有M行,每组测试数
据一行,为一个N(1<=N<=35)
输出
对于每一个测试数据,输出对应的不同的上楼梯方法
样例输入
3
1
5
10
样例输出
1
13
274
二.mirror number
时间限制: 1000ms
内存限制: 100000kB
描述
像1,101,2552这样对称的数,我们称它为mirror number,前10个mirror
number为1,2,3,4,5,6,7,8,9,11。以此类推。
请你求出第N个对称的数。
输入
第一行输入T,T组测试数据,接下去每组数据占一行,输入一个N(1<=N<=100000)。
输出
输出第N个mirror number,每组占一行。
样例输入
3
2
11
15
样例输出
2
22
66
三.取糖果
时间限制: 1000ms
内存限制: 10000kB
描述
女生节到了,ACM团队要给ACM的女生们发糖果啦,不过调皮的男生要写考考女生们一个小问题。
把n个糖果连成一排,要把这些糖果拿光,刚开始可以任取一个,接下去只能取“有相邻的糖果被取走”的糖果,例如刚开始有5个糖果,刚开始取走第3个,第二步只能取第2或第4个,以此类推。给出n,问将糖果取光的方法有多少种。两种取法只要有某次取的糖果不一样就视为不同。
输入
输入T组数据,第一行输入T。
接下去T行,每组数据输入一个整数n(1<=n<=100)。
输出
每组数据输出一行,为将糖果取光的方法数,结果模1000000007。
样例输入
2
1
2
样例输出
1
2
------解决方案--------------------
第一题的详细答案:
一.上楼梯
时间限制: 1000ms
内存限制: 10000kB
描述
一个人上楼梯,他可以一步上1级,可以一步上2级,也可以
一步上3级,现在楼梯一共有N级,有多少种不同的上法
(注意:当上到还剩下1级就到达时,不能直接上2级且不能
直接上3级,当上到还剩下2级就到达时,不能直接上3级),
输入
输入第一个数是M,表示M组测试数据,接下来有M行,每组测试数
据一行,为一个N(1<=N<=35)
输出
对于每一个测试数据,输出对应的不同的上楼梯方法
样例输入
3
1
5
10
样例输出
1
13
274
二.mirror number
时间限制: 1000ms
内存限制: 100000kB
描述
像1,101,2552这样对称的数,我们称它为mirror number,前10个mirror
number为1,2,3,4,5,6,7,8,9,11。以此类推。
请你求出第N个对称的数。
输入
第一行输入T,T组测试数据,接下去每组数据占一行,输入一个N(1<=N<=100000)。
输出
输出第N个mirror number,每组占一行。
样例输入
3
2
11
15
样例输出
2
22
66
三.取糖果
时间限制: 1000ms
内存限制: 10000kB
描述
女生节到了,ACM团队要给ACM的女生们发糖果啦,不过调皮的男生要写考考女生们一个小问题。
把n个糖果连成一排,要把这些糖果拿光,刚开始可以任取一个,接下去只能取“有相邻的糖果被取走”的糖果,例如刚开始有5个糖果,刚开始取走第3个,第二步只能取第2或第4个,以此类推。给出n,问将糖果取光的方法有多少种。两种取法只要有某次取的糖果不一样就视为不同。
输入
输入T组数据,第一行输入T。
接下去T行,每组数据输入一个整数n(1<=n<=100)。
输出
每组数据输出一行,为将糖果取光的方法数,结果模1000000007。
样例输入
2
1
2
样例输出
1
2
------解决方案--------------------
第一题的详细答案:
- C/C++ code
#include <iostream> using namespace std; int main() { int a[36]; a[0]=1; a[1]=1; a[2]=2; int m,j; int b[100]; cin >> m; for (j=0;j<=m-1;j++) cin >> b[j]; for (j=3;j<=35;j++) a[j]=a[j-1]+a[j-2]+a[j-3]; for (j=0;j<=m-1;j++) cout << a[b[j]] << endl; return 0; } 改改成为c语言吧。
------解决方案--------------------
- C/C++ code
#include <stdio.h> int count(int n) { if (n<2) return 1; if (n==2) return 2; return count(n-1)+count(n-2)+count(n-3); } int main() { int m,n; scanf("%d",&m); while(m>0) { scanf("%d",&n); printf("%d\n",count(n)); } return 0; }