码迷,mamicode.com
首页 > 其他好文 > 详细

1254 Problem V

时间:2016-07-15 17:11:02      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

问题 V: 光棍的yy

时间限制: 1 Sec  内存限制: 128 MB 提交: 42  解决: 22 [提交][状态][讨论版]

题目描述

yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊技术分享

现在给你m个1,你可以把2个1组合成一个2,这样就不是光棍了技术分享,问这样的组合有多少种??

例如(111  可以拆分为 111 12 21  有三种)

输入

第一行输入一个n表示有n个测试数据 以下n行,每行输入m个1 (1 <= n,m <= 200)

输出

输出这种组合种数,占一行

样例输入

3
11
111
11111

样例输出

2
3
8

这个题实际上就是求前200个斐波那契数列+大数


 1 #include <iostream>
 2 #include <string.h>
 3 using namespace std;
 4 
 5 char a[222];
 6 int tag;
 7 int f[222][1111],t;
 8 
 9 void fb()
10 {
11     int i,j;
12     memset(f,0,sizeof(f));
13     f[0][0]=f[1][0]=1;
14     for(i=2;i<222;i++)
15     {
16         tag=0;
17         for(j=0;j<=200;j++)
18         {
19             tag=f[i-1][j]+f[i-2][j]+tag;
20             f[i][j]=tag%10;
21             tag/=10;
22         }
23     }
24 }
25 
26 int main()
27 {
28     int na,i,j;
29     fb();
30     while(cin>>t)
31     {
32         while(t--)
33         {
34             cin>>a;
35             na=strlen(a);
36             for(i=200;i>=0;i--)
37             {
38                 if(f[na][i]!=0)
39                     break;
40             }
41             for(j=i;j>=0;j--)
42             {
43                 cout<<f[na][j];
44             }
45             cout<<endl;
46         }
47     }
48     return 0;
49 }

 

1254 Problem V

标签:

原文地址:http://www.cnblogs.com/asuml/p/5673970.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!