大数求和
来源:互联网 发布:删除建立的属性列sql 编辑:程序博客网 时间:2024/05/16 13:46
题目链接:http://zju.acmclub.com/index.php?app=problem_title&id=1&problem_id=1091
给定几个大数,求出和并输出。
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
算出:370370367037037036703703703670
需要注意的几项有:
1.显然要先以字符串的形式来读入,我使用的是二维矩阵。
2.注意位数的对齐,我用的方法是从后往前逐位计算。例如123,1,1,三个数在矩阵中分别存成321,100,100的形式。
3.注意进位,例如9+9+9=27,7保存在数组中,2向下一次计算进位。
4.最高位需要单独处理,最高位得到的数直接保存在数组中即可。
cpp代码:
#include<iostream>#include<cstring>#define SIZE 100using namespace std;int main(){ int mat[SIZE][SIZE]; char str[SIZE]; int result[SIZE]; int n,i,j,row,col,MAX_col; cin>>n; while(n--){ row = 0;MAX_col=0; while(1){ cin>>str; if(!strcmp(str,"0"))break; if(strlen(str)>MAX_col)MAX_col=strlen(str); col=0; for(j=strlen(str)-1;j>=0;j--){ mat[row][col++]=str[j]-'0'; } row++; } //compute "ADD" int pos=0,flag=0,digit; for(j=0;j<MAX_col-1;j++){ digit=0; for(i=0;i<row;i++){ digit+=mat[i][j]; } digit+=flag; result[pos++]=digit%10; flag=digit/10; } //process top-digit alone digit=0; j=MAX_col-1; for(i=0;i<row;i++){ digit+=mat[i][j]; } digit+=flag; result[pos++]=digit; for(i=pos-1;i>=0;i--)cout<<result[i]; cout<<endl<<endl; } return 0;}
0 0
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和
- 大数求和问题
- 华为oj【大数求和】
- HDU 1002大数求和
- 1002,大数求和
- 大数求和问题
- 大数求和问题
- 面试题整理-大数求和
- 【C语言代码】大数求和
- 程序猿之---C语言细节24(段错误、类型提升、sizeof 'A')
- Gradle Android插件 官方文档 (2)
- magento本地安装测试好了,在上传安装文件到FTP后,安装时出现问题
- continue 与else用法
- 黑马程序程序员——java常用类总结
- 大数求和
- [leetcode]Search Insert Position
- 常用的adb命令
- 开发人员,请不要抱怨项目没有文档
- hdu 3265 Posters
- Oracle学习笔记(一)
- MATLAB中norm()的用法
- ndroid学习笔记-Activity&Intent
- thinkphp中的url传值