F
来源:互联网 发布:赛博朋克2077 知乎 编辑:程序博客网 时间:2024/05/25 19:55
12
37
原本就以为是一道简单的递推就能解决的问题,没想到牵连到了大数,结果又只好重写,而且本人的递推公式不适合大数,建议使用更简洁的公式a[i]=2*a[i-1]+a[i-2];而我自己使用的是c[i]=a[i]+b[i],
a[i]=a[i-1]+b[i-1];b[i]=2*a[i-1]+b[i-1];
#include<stdio.h>#include<string.h>#include<string>#include<algorithm>int a[1010][1000],b[1010][1000],c[1010][1000];int main(){ memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));a[1][1]=1,b[1][1]=2;a[1][0]=1,b[1][0]=1;c[1][0]=1,c[1][1]=3;for(int i=2;i<=1005;i++) { int j=1,x=0; while(j<=a[i-1][0]||j<=b[i-1][0]){ a[i][j]=a[i-1][j]+b[i-1][j]+x; x=a[i][j]/10;a[i][j]%=10;j++; } a[i][j]=x; if(a[i][j]==0)j--; a[i][0]=j; j=1,x=0; while(j<=a[i-1][0]||j<=b[i-1][0]){ b[i][j]=2*a[i-1][j]+b[i-1][j]+x; x=b[i][j]/10;b[i][j]%=10;j++; } b[i][j]=x; if(b[i][j]==0)j--; b[i][0]=j; j=1,x=0; while(j<=a[i][0]||j<=b[i][0]) { c[i][j]=a[i][j]+b[i][j]+x;x=c[i][j]/10;c[i][j]%=10;j++; } c[i][j]=x;if(c[i][j]==0)j--; c[i][0]=j;//a[i]=a[i-1]+b[i-1];//b[i]=2*a[i-1]+b[i-1];}int n;while(scanf("%d",&n)!=EOF){ for(int i=c[n][0];i>=1;i--)printf("%d",c[n][i]); putchar('\n');}//printf("%d",strlen(a));return 0;}
#include<stdio.h>#include<string.h>#include<string>#include<algorithm>int a[1010][1000],b[1010][1000],c[1010][1000];int main(){ memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));a[1][1]=1,b[1][1]=2;a[1][0]=1,b[1][0]=1;c[1][0]=1,c[1][1]=3;for(int i=2;i<=1005;i++) { int j=1,x=0; while(j<=a[i-1][0]||j<=b[i-1][0]){ a[i][j]=a[i-1][j]+b[i-1][j]+x; x=a[i][j]/10;a[i][j]%=10;j++; } a[i][j]=x; if(a[i][j]==0)j--; a[i][0]=j; j=1,x=0; while(j<=a[i-1][0]||j<=b[i-1][0]){ b[i][j]=2*a[i-1][j]+b[i-1][j]+x; x=b[i][j]/10;b[i][j]%=10;j++; } b[i][j]=x; if(b[i][j]==0)j--; b[i][0]=j; j=1,x=0; while(j<=a[i][0]||j<=b[i][0]) { c[i][j]=a[i][j]+b[i][j]+x;x=c[i][j]/10;c[i][j]%=10;j++; } c[i][j]=x;if(c[i][j]==0)j--; c[i][0]=j;//a[i]=a[i-1]+b[i-1];//b[i]=2*a[i-1]+b[i-1];}int n;while(scanf("%d",&n)!=EOF){ for(int i=c[n][0];i>=1;i--)printf("%d",c[n][i]); putchar('\n');}//printf("%d",strlen(a));return 0;}这个题目其实就是在于与大数结合,而递推其实不难。在本题中,觉得最大的收获就是在int类型中利用第一个元素来计数该数的位数。
- f
- f
- f
- f
- f
- F#
- f
- F
- f
- f
- f
- f
- f
- f
- F
- f
- f
- F
- 将Cmder添加到系统右键菜单中
- hpuoj 【1141】蜗牛爬树【模拟】&&【思维】
- 文件字节输出流
- 数据采集(六):scrapy爬取搜狗微信新闻+selenium模拟鼠标点击
- CF -- 835C Star sky 【dp + 预处理】
- F
- Lua中返回两个值
- 《http权威指南》知识点摘要
- 适配器模式
- 润乾5填报表定时提交
- 【LeetCode】496. Next Greater Element I
- atom前端向插件
- 软交换之争:OVS VS LINUX BRIDGE
- 整理Ubuntu下secureCRT的安装和USB端口权限问题