微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NYOJ-光棍的yy-655

http://acm.nyist.net/JudgeOnline/problem.php?pid=655

光棍的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)
输出
输出这种组合种数,占一行
样例输入
3
11
111
11111样例输出
2
3
8来源
hdu
上传
yangyin1217

*///大数问题

#include<stdio.h>//计算菲波那切数列:1,2,3,5,8,13,21,34、、、、、
#include<string.h>//大数
char a[210],b1[210],b2[210],e[210];//=======AC=========
int main(){
   int str,i,n,j,s,c;//第200个数:453973694165307953197296969697410619233826  (有39位);
   scanf("%d",&n);
   while(n--){
  // scanf("%s",a);
   memset(b1,'0',sizeof(b1));
   memset(b2,sizeof(b2));
    b2[0]='1';
   //str=strlen(a);
     for(j=0;j<200;j++)
   {
      strcpy(e,b2);
       for(i=0,c=0;i<=209;i++)
   {
      s=(b1[i]+b2[i]-'0'-'0')+c;
      b2[i]=s%10+'0';
          c=s/10;
   }
   strcpy(b1,e);
   } 
  for(i=209;i>=0;i--){
  if(b2[i]!='0')
    {   for(j=i;j>=0;j--)
     printf("%c",b2[j]);
  break;
     }
  }
  printf("\n");
  }
return 0;
}

 

// 其他AC代码

#include<stdio.h> #include<string.h> int main() { int fab[201][50]; memset(fab,sizeof(fab)); int i,k=0; fab[1][0]=1; fab[2][0]=2; fab[3][0]=3; for(i=4; i<=200; i++) { for(j=0; j<=k; j++) { fab[i][j]+=(fab[i-1][j] + fab[i-2][j]); if(fab[i][j]>10000) { fab[i][j+1]=fab[i][j]/10000; if(k<j+1) k=j+1; fab[i][j]-=10000; } } } char str[220]; int n,l; scanf("%d",&n); while(n--) { scanf("%s",str); l=strlen(str); for(i=48; i>=0; i--) if(fab[l][i]!=0 && fab[l][i+1]==0) { printf("%d",fab[l][i]); for(j=i-1; j>=0; j--) printf("%4.4d",fab[l][j]); break; } printf("\n"); } return 0; }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐