NYOJ513-A+B Problem IV
来源:互联网 发布:广工数据挖掘2016 编辑:程序博客网 时间:2024/04/28 07:06
A+B Problem IV
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
- acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了。
- 输入
- 包含多组测试数据
每组数据包含两个正数A,B(可能为小数且位数不大于400) - 输出
- 每组输出数据占一行,输出A+B的结果,结果需要是最简的形式。
- 样例输入
1.9 0.10.1 0.91.23 2.13 4.0
- 样例输出
213.337
分析:将两个加数存到整型数组中,并分别记录下各自小数点的位置,然后将小数部分较短的加数进行移位,低位补0,然后相加,输出的时候注意忽略小数点后面多余的0,另外由于长度<400,所以两个加起来(移位之后)就有可能等于800位,刚开始定义410位,贡献啦几个WA。。。
#include<stdio.h>#include<string.h>#define N 1000int num1[N+10],num2[N+10],res[N+10];char s1[N+10],s2[N+10];void move(int *num, int d){ int i; for(i=N;i>=d&&num[i-d]==0;i--); for(;i>=d;i--){ num[i]=num[i-d]; } for(i=d-1;i>=0;i--){ num[i]=0; }}int main(){ int n,i,j,len1,len2,site1,site2,site,len; while(scanf("%s %s",s1,s2)!=EOF) { memset(num1,0,sizeof(num1)); memset(num2,0,sizeof(num2)); memset(res,0,sizeof(res)); len1=strlen(s1); len2=strlen(s2); for(i=len1-1,j=site1=0;i>=0;i--) { if(s1[i]=='.'){ site1=j; continue; } num1[j++]=s1[i]-'0'; } for(i=len2-1,j=site2=0;i>=0;i--) { if(s2[i]=='.'){ site2=j; continue; } num2[j++]=s2[i]-'0'; } if(site1>site2){ move(num2,site1-site2); } else if(site1<site2){ move(num1,site2-site1); } site=site1>site2?site1:site2; for(i=0;i<N;i++) { res[i]+=num1[i]+num2[i];//注意这里一定是+=,否则进位会丢失掉 if(res[i]>=10) { res[i]-=10; res[i+1]+=1; } } for(i=N-1;i>=0&&res[i]==0;i--); if(i<0) { printf("0\n"); continue; } for(;i>=site;i--){//整数部分 printf("%d",res[i]); } if(site>0){//有小数部分 for(i=0,len=-1;i<site;i++){ if(res[i]!=0) { len=i; break; } } if(len!=-1){ printf("."); for(i=site-1;i>=len;i--){ printf("%d",res[i]); } } } printf("\n"); } system("pause"); return 0;}
- NYOJ513-A+B Problem IV
- NYOJ513 A+B Problem IV
- NYOJ513,A+B Problem IV
- nyoj513 A+B Problem IV
- NYOJ513 A+B Problem IV(带小数的大数加法)
- A+B Problem IV
- A+B Problem IV
- A+B Problem IV
- A+B Problem IV
- A+B Problem IV
- A+B Problem IV
- A+B Problem IV
- 【A+B Problem IV 513 】
- acm-A+B Problem IV
- NYOJ 513 A+B Problem IV
- NYOJ NO.513 A+B Problem IV
- nyoj 513 A+B Problem IV
- NYOJ 513 A+B Problem IV
- UNIX环境高级编程读书笔记 第一部分 文件 (第四章 文件和目录)
- javascript以及jquery诡异问题全记录(持续更新)
- 斐波那契数列专题
- js中escape()函数和unescape()函数的功能
- 创意无极限
- NYOJ513-A+B Problem IV
- 适合程序员的两样工具-续集
- Daily-C-Study(24):C语言内存管理
- BUAA集训队选拔赛部分简单题解
- 卡特兰数(Catalan)
- Norlit OS —— 自制操作系统 第0章 热身运动
- 编程基础-----qsort函数排序
- hdu 1217 poj 1806 最短路flord求 货币交换套利 注意3个循环的顺序
- (泛化,实现,依赖,关联(聚合,组合))