NYOJ 655 光棍的yy(大数+斐波那契)
来源:互联网 发布:手机开淘宝店怎么注册 编辑:程序博客网 时间:2024/06/06 06:16
光棍的yy
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
yy经常遇见一个奇怪的事情,每当他看时间的时候总会看见11:11,这个很纠结啊。
现在给你m个1,你可以把2个1组合成一个2,这样就不是光棍了,问这样的组合有多少种??
例如(111 可以拆分为 111 12 21 有三种)
- 输入
- 第一行输入一个n表示有n个测试数据
以下n行,每行输入m个1
(1 <= n,m <= 200) - 输出
- 输出这种组合种数,占一行
- 样例输入
31111111111
- 样例输出
23
8
思路:我们想求11111有多少组合数就是111的组合数和1111的组合数相加,所以就用到了斐波那契,但是由于当1非常多时两个组合数相加就会非常的大,所以就不能用简单的加法了,所以就要用到大数加法。
代码:
#include<stdio.h>#include<string.h>int main(){ int t,a[220][210];//a[i][j]表示当有i个1时的组合数的j+1(由于这里是从0开始的所以是j+1)位 memset(a,0,sizeof(a)); a[1][0]=1; a[2][0]=2; for(int i=3; i<=200; i++) { int ans=0,j=0,sum; while(j<200)//大数加法 { sum=(a[i-1][j]+a[i-2][j]+ans); a[i][j]=sum%10; ans=sum/10; j++; } } scanf("%d",&t); while(t--) { char s[220]; scanf("%s",s); int l=strlen(s); int flag=0; for(int i=199; i>=0; i--)//前导0去掉 { if(a[l][i]!=0) { flag=i; break; } } for(int i=flag; i>=0; i--)//输出组合数的各个位数 { printf("%d",a[l][i]); } printf("\n"); }}
0 0
- nyoj 655 光棍的yy 【大数斐波那契】
- NYOJ 光棍的yy 斐波那契 大数
- NYOJ 655 光棍的yy(大数斐波那契数列)
- NYOJ 655 光棍的yy(大数+斐波那契)
- NYOJ655 光棍的yy【大数】【斐波那契】
- NYOJ 题目655 光棍的yy(斐波那契数列 Fibonacci number)
- nyoj 655 光棍的YY (斐波那契数列)
- 大数斐波那契数列(nyoj655)光棍的yy
- nyoj-655-光棍的yy(大数)
- nyoj655 光棍的yy(大数的斐波那契数)
- 杭电—1865 大数斐波那契数列 光棍的yy
- nyoj 655 光棍的yy
- NYOJ-光棍的yy-655
- nyoj-655-光棍的yy
- NYOJ 655 光棍的YY
- NYOJ 655光棍的yy
- NYOJ 655 光棍的yy
- nyoj 655光棍的yy
- Intellij Mybatis连接Mysql数据库进行高级映射查询
- php静态属性,静态方法
- jquery-qrcode生成二维码
- MyBatis 简单使用
- 用户登陆的用户名的值传到下一个页面的代码
- NYOJ 655 光棍的yy(大数+斐波那契)
- 对模块化编程的理解
- linux下socket编程的一些学习经历(一)
- 解释什么是字对齐什么是半字对齐(转载)
- leetcode---Insertion Sort List
- HDU 1914 The Stable Marriage Problem 稳定婚姻
- 选择排序算法
- 使用mvc模型实现简易新闻客户端功能(本地)
- MUI框架 栅格化系统