ACM 大数 某种序列
来源:互联网 发布:ofo登录 网络请求超时 编辑:程序博客网 时间:2024/05/23 00:01
原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=114
描述:
数列A满足An = An-1 + An-2 + An-3, n >= 3 编写程序,给定A0, A1和 A2,计算A99
在编程过程中遇到的问题:
本以为是很简单的for循环就可以解决的问题,没有想到在加的过程中数的位数会越来越多,导致出现精度问题。
我的收获:
在该过程中,除了需要用到手工模拟加法运算的算法,而且还需要注意的是如何巧妙使其循环运算,这就需要用到数组的赋值。
代码:
#include <stdio.h>#include <string.h>int a[50],b[50],c[50],d[50];void init(){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); memset(d,0,sizeof(d));}void create(char s[],int num[]){ int i,j; for(i=strlen(s)-1,j=0;i>=0;i--,j++) num[j]=s[i]-'0';}int main(){ char s[50],s1[50],s2[50]; int i,j,k; while(scanf("%s %s %s",&s,&s1,&s2)!=EOF){ init(); create(s,a); create(s1,b); create(s2,c); for(i=0;i<=96;i++){ int s=0,v; for(j=0;j<50;j++){ v=a[j]+b[j]+c[j]+s; d[j]=v%10; s=v/10; } for(j=0;j<50;j++){ a[j]=b[j]; b[j]=c[j]; c[j]=d[j]; } } j=49; while(d[j]==0&&j>=0) j--; if(j<0) printf("0\n");else{ // printf("%d",j); for(i=j;i>=0;i--) printf("%d",d[i]); printf("\n"); }}return 0;}
阅读全文
0 0
- ACM 大数 某种序列
- 某种序列--大数加法
- nyoj114 某种序列(大数)
- ACM 某种序列
- NYOJ 114 某种序列【大数】
- nyoj114某种序列(大数)
- 114 某种序列【大数求和】
- 大数巨之某种序列
- NYOJ 114 某种序列 【大数问题】
- Problem 56: 某种序列(大数加法+数列)
- nyoj 114 某种序列 【java大数】
- NYOJ 题目114 某种序列(大数)
- NYOJ 114 某种序列(大数加)
- nyoj.114 某种序列【大数问题】 2015/03/09
- nyoj 某种序列 114 (大数&&滚动数组) 好题
- NYOJ 114 某种序列(三个数大数相加)
- 某种序列
- 某种序列
- 50天iOS挑战(Swift)
- Tablayout与viewpager的联动
- 模糊查询+删除+修改+添加习题
- 【JavaEE学习笔记】Servlet_03_重定向,请求对象,请求域
- ADT打包本地扩展ANE指令
- ACM 大数 某种序列
- Java软件开发工程师的自我修养与晋升(B/S结构)
- xiaoyang,shopping
- angularjs之购物车的增改查1
- UUID 和 GUID 的区别
- DrawerLayout侧拉
- SurfaceView播放视频
- 简单的朴素贝叶斯模型练习
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8