杭电 1865 1string
2015-07-27 17:43
302 查看
1sting
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4155 Accepted Submission(s): 1563
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
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.
[align=left]Output[/align]
The output contain n lines, each line output the number of result you can get .
[align=left]Sample Input[/align]
3 1 11 11111
[align=left]Sample Output[/align]
1 2 8 本题主要考察大数斐波拉契数列 按照一般的做法来写数据会溢出已AC代码:[code]#include<stdio.h> #include<string.h> int main() { int a[201][100]; char b[1001]; int len,c,m,n,i,j; memset(a,0,sizeof(a)); a[1][0]=1,a[2][0]=2; for(c=0,i=3;i<201;i++) { for(m=0,j=0;j<=100;j++) { c=a[i-1][j]+a[i-2][j]+m; a[i][j]=c%10;//不断取余将所求之和用二维数组存储起来 m=c/10; } } int s,l,k; scanf("%d",&s); getchar(); while(s--) { gets(b); len=strlen(b); for(i=99,k=0;i>=0;i--) { if(a[len][i]!=0)//通过输入1的个数来找到相应的值所在二维数组的位置 k++; if(k!=0) printf("%d",a[len][i]); } printf("\n"); } return 0; }
[/code]
相关文章推荐
- 生成MyEclipse6.5&7.5&8.0注册码的java源码
- Android编程权威指南-第一章挑战练习二:添加后退按钮
- python安装
- STL使用概述
- Notification 的使用
- Best Time to Buy and Sell Stock II
- zookeeper无法启动"Unable to load database on disk"
- registerClass和registerNib的区别
- 让 Vim 支持 nginx 语法(syntax) 格式化配置文件
- supervisor的配置
- 标准Http协议支持六种请求方法
- 最长公共上升子序列 csu1120 病毒
- Notification 的基本知识
- HDOJ 1012 u Calculate e(水题)
- 80端口被NT kernel & System占用
- PHP中的SESSION机制
- 第一篇博客
- MVC interview question
- 【linux高级程序设计】(第九章)进程间通信-管道 2
- 运维必须掌握的Linux面试题