【杭电-oj】-1865-1sting(大数斐波那契数列)
2016-07-18 16:53
429 查看
1sting
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5021 Accepted Submission(s): 1864
Problem Description
You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or leave the ‘1’ there. Surly, you may get many different results. For example, given 1111 , you can get 1111, 121, 112,211,22. Now, your work is to find the total
number of result you can get.
Input
The first line is a number n refers to the number of test cases. Then n lines follows, each line has a string made up of ‘1’ . The maximum length of the sequence is 200.
Output
The output contain n lines, each line output the number of result you can get .
Sample Input
3
1
11
11111
Sample Output
1
2
8
Author
z.jt
这道题也是斐波那契数列,只是需要用字符串把1的个数转换为n而已。
#include<cstdio> #include<cstring> int main() { int t,l,k; char a[201]; int f[1001][211]={0}; //全部初始化为0 f[1][1]=1; f[2][1]=2; for(int i=3;i<=1000;i++) { for(int j=1;j<=210;j++) //二维数组,i表示第几个数,j表示这个数的第几位, { // 然后对j进行类似大数相加的运算 f[i][j]+=f[i-1][j]+f[i-2][j]; if(f[i][j]>9) { f[i][j]-=10; f[i][j+1]++; } } } scanf("%d",&t); while(t--) { scanf("%s",a); l=strlen(a); k=100; for( ;f[l][k]==0;k--); //开始全部初始化为零,直到遇到一个f [k]!=0,此时跳出循环,开始输出 for( ;k>=1;k--) //这种倒着输出不同于之前的倒着输出,此时不用考虑是否进位,只要不超出范围即可 printf("%d",f[l][k]); printf("\n"); } return 0; }
相关文章推荐
- XStream使用总结
- svn link方式安装,适用于myeclipse、sts开发工具
- 逻辑学 —— 复杂问题谬误
- 解析set,get方法
- 9C - Hexadecimal's Numbers
- 大文件上传实现
- Trie - 字典树 模板
- LCD 原理和移植总结【转】
- 合并多行 某一字段
- 大数A+B<hdoj1002>
- spark + quartz : org.apache.spark.SparkException: Task not serializable
- 暑期集训第二周---搜索
- 用Castor 处理XML文档
- POJ-1182 食物链
- poj 2153 map简单应用
- C语言sscanf函数的总结
- Java中如何解决double和float精度不准的问题
- httpUtil
- Android Spinner 放在PopupWindow 点击报错
- 分类算法之朴素贝叶斯分类(Naive Bayesian classification)