AYIT暑假集训大二第一周周三赛 B 跳舞毯
2015-07-18 21:28
357 查看
B - 跳舞毯
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice HDU
2154
Description
由于长期缺乏运动,小黑发现自己的身材臃肿了许多,于是他想健身,更准确地说是减肥。
小黑买来一块圆形的毯子,把它们分成三等分,分别标上A,B,C,称之为“跳舞毯”,他的运动方式是每次都从A开始跳,每次都可以任意跳到其他块,但最后必须跳回A,且不能原地跳.为达到减肥效果,小黑每天都会坚持跳n次,有天他突然想知道当他跳n次时共几种跳法,结果想了好几天没想出来-_-
现在就请你帮帮他,算出总共有多少跳法。
Input
测试输入包含若干测试用例。每个测试用例占一行,表示n的值(1<=n<=1000)。
当n为0时输入结束。
Output
每个测试用例的输出占一行,由于跳法非常多,输出其对10000取模的结果.
Sample Input
2
3
4
0
Sample Output
2
2
6
分析
本题有两种方法,第一种就是找规律,这个规律就是a[i]=(a[i-1]+a[i-2]*2)%10000;
因为结果可能会很大,所以需要对10000取余,其实a[i-1],a[i-2]都已经取余过;
第二种是一位大神写的难道叫深搜?等我看懂吧,先保存了
其实这个运行花费的时间更长了,证明不是最好的方法
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d
& %I64u
Submit Status Practice HDU
2154
Description
由于长期缺乏运动,小黑发现自己的身材臃肿了许多,于是他想健身,更准确地说是减肥。
小黑买来一块圆形的毯子,把它们分成三等分,分别标上A,B,C,称之为“跳舞毯”,他的运动方式是每次都从A开始跳,每次都可以任意跳到其他块,但最后必须跳回A,且不能原地跳.为达到减肥效果,小黑每天都会坚持跳n次,有天他突然想知道当他跳n次时共几种跳法,结果想了好几天没想出来-_-
现在就请你帮帮他,算出总共有多少跳法。
Input
测试输入包含若干测试用例。每个测试用例占一行,表示n的值(1<=n<=1000)。
当n为0时输入结束。
Output
每个测试用例的输出占一行,由于跳法非常多,输出其对10000取模的结果.
Sample Input
2
3
4
0
Sample Output
2
2
6
分析
本题有两种方法,第一种就是找规律,这个规律就是a[i]=(a[i-1]+a[i-2]*2)%10000;
因为结果可能会很大,所以需要对10000取余,其实a[i-1],a[i-2]都已经取余过;
1 2 3 4 5 6 7 8 9 10 11 12
#include<stdio.h> int main() { int n,i,a[1010]; a[1]=0; a[2]=2; for(i=3;i<1005;i++) a[i]=(a[i-2]*2+a[i-1])%10000; while(scanf("%d",&n)&&n) printf("%d\n",a[n]); return 0; }
第二种是一位大神写的难道叫深搜?等我看懂吧,先保存了
1 2 3 4 5 6 7 8 9 10 11 1213
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h> #include<math.h> #include<iostream> using namespace std; int dp[1010][5]; void init() { dp[2][0]=2; dp[2][1]=1; dp[2][2]=1; for(int i=3; i<=1005; i++) { dp[i][0]=((dp[i-1][1]%10000)+(dp[i-1][2]%10000))%10000; dp[i][1]=((dp[i-1][0]%10000)+(dp[i-1][2]%10000))%10000; dp[i][2]=((dp[i-1][0]%10000)+(dp[i-1][1]%10000))%10000; } } int main() { init(); int num=0; while(cin>>num&&num) cout<<dp[num][0]<<endl; return 0; }
其实这个运行花费的时间更长了,证明不是最好的方法
相关文章推荐
- 为什么我们不能坚持到底?
- nVIDIA显卡命名规律
- 人才成长有其自身的规律
- Spiral——找规律暴力
- HDU 1005 Number Sequence
- HDU 1061 Rightmost Digit
- [2013山东省第四届ACM大学生程序设计竞赛]——Alice and Bob
- hdu 4519
- Codeforces Round #206 (Div. 2) C - Vasya and Robot
- NY--854 -- 留恋
- HDOJ1517[K(2~9)倍博弈][有规律存在]
- POJ2484(水博弈)
- ZOJ 2686(规律博弈)
- HDU 4642 多校四-1011
- 【hdoj 1005】有限状态机
- Number Sequence_hdu_1005(规律)
- 自己发现的数学规律一
- 自己发现的数学规律二
- csuoj1303(将循环小数转化为分数)
- HDU 4371 Minimum palindrome 解题报告(找规律)