AOJ437 高精度加法
来源:互联网 发布:软件的质量标准 编辑:程序博客网 时间:2024/06/06 12:21
Description
计算一组连续的非负整数的和
Input
第一行T,表示测试数据有T组
第2至K+1行:每行一个非负整数,位数在100以内,每组长整数不超过50个,每组输入以"0"结束
第2至K+1行:每行一个非负整数,位数在100以内,每组长整数不超过50个,每组输入以"0"结束
Output
每组对应一个输出,为该组数的和
Sample Input
11234567890123456789012345678901234567890123456789012345678901234567890123456789012345678900
Sample Output
370370367037037036703703703670
Hint
整数可能以0开始
思路:
高精度加法就是模拟手算,用字符串逆序储存数字,每位相加,>=10进一位和下一位相加,要注意这题可能以0开始,即010+010 000+010等都有可能,注意处理前导0
参考代码:
#include <stdio.h>#include <string.h>char a[55][110]={0};void add(char *a,char *b);//高精度加法void change(char *a);//字符串倒序void del(char *a,int n);//删除前导0int main(){ int t,k=0,i,len,flag,m; scanf("%d",&t); while(t--) { k=0; while(scanf("%s",a[k])) { flag=0; m=strlen(a[k]); if(a[k][0]=='0'&&m==1) break; if(a[k][0]=='0') { for(i=0;i<m;i++) { if(a[k][i]=='0') flag++; if(a[k][i]!='0') break; } del(a[k],flag); } change(a[k]); k++; } for(i=0;i<k;i++) add(a[i],a[i+1]); len=strlen(a[i]); for(k=len-1;k>=0;k--) printf("%c",a[i][k]); printf("\n"); } return 0;}void add(char *a,char *b){ int lena,lenb,i,num,e=0; char p[110]={0}; lena=strlen(a); lenb=strlen(b); if(lena>lenb) { for(i=0;i<lenb;i++) { num=a[i]-'0'+b[i]-'0'+e; e=num/10; p[i]=num%10+'0'; } for(;i<lena;i++) { num=a[i]-'0'+e; e=num/10; p[i]=num%10+'0'; } if(e) p[i++]=e+'0'; p[i]=0; } else { for(i=0;i<lena;i++) { num=a[i]-'0'+b[i]-'0'+e; e=num/10; p[i]=num%10+'0'; } for(;i<lenb;i++) { num=b[i]-'0'+e; e=num/10; p[i]=num%10+'0'; } if(e) p[i++]=e+'0'; p[i]=0; } strcpy(b,p);}void change(char *a){ int i,len; char temp; len=strlen(a); for(i=0;i<len/2;i++) { temp=a[i]; a[i]=a[len-1-i]; a[len-1-i]=temp; }}void del(char *a,int n){ int i,len; len=strlen(a); for(i=0;i<len-n;i++) a[i]=a[i+n]; a[i]='\0';}
0 0
- AOJ437 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度 加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- 高精度加法
- Eclipse导入项目:No projects are found to import
- AOJ158 有假币
- AOJ298 Rings of square grid
- AOJ191 删除数字
- Delphi XE 2 精简版在 Windows 8.1 64 位中的安装
- AOJ437 高精度加法
- IOS学习笔记(七)之UISegmentedControl分段控件的基本概念和使用方法
- AOJ194 猴子分桃
- AOJ331 汉诺塔
- AOJ574 爱就大声说出来
- AOJ152 A X B problem(大数相乘、高精度乘法)
- 网卡驱动10-做一个与外界交互的虚拟网卡6(突发奇想!搞个网络鼠标!)
- iOS Developer Library
- AOJ588 月老使命