nyoj A+BProblemIV
来源:互联网 发布:温长卿 知乎 编辑:程序博客网 时间:2024/06/05 14:35
A+BProblemIV
题目描述
acmj最近发现在使用计算器计算高精度的大数加法时很不方便,于是他想着能不能写个程序把这个问题给解决了。
输入
包含多组测试数据
每组数据包含两个正数A,B(可能为小数且位数不大于400)
每组数据包含两个正数A,B(可能为小数且位数不大于400)
输出
每组输出数据占一行,输出A+B的结果,结果需要是最简的形式。
样例输入
1.9 0.10.1 0.91.23 2.13 4.0
样例输出
213.337代码示例:
#include<stdio.h>#include<string.h>char a[1000],b[1000],c[1000];int main(){ while(~scanf("%s%s",a,b)) { int i,j,signa,signb,la,lb; memset(c,0x00,sizeof(c)); la=strlen(a); lb=strlen(b); for(i=0; i<la; i++) { if(a[i]=='.')//找出小数点的位置 { signa=i; break; } } if(i==la) { signa=la;//如果是整数,就把它变为小数,且要把此时的小数点位置找出 a[la]='.'; a[la+1]='0'; la=la+2; } for(j=0; j<lb; j++) { if(b[j]=='.') { signb=j; break; } } if(j==lb) { signb=lb; b[lb]='.'; b[lb+1]='0'; lb=lb+2; } int d=0,sum,ans=0; int k=la-signa;//有多少小数位 int t=lb-signb;//有多少小数位 i=la-1; j=lb-1; if(k>t) { int N=k-t; while(N--) { c[ans++]=a[i--]; } while(a[i]!='.') { sum=a[i]-'0'+b[j]-'0'+d; d=sum/10; c[ans]=sum%10+'0'; i--; j--; ans++; } } else { int N=t-k; while(N--) { c[ans++]=b[j--]; } while(b[j]!='.') { sum=a[i]-'0'+b[j]-'0'+d; d=sum/10; c[ans]=sum%10+'0'; i--; j--; ans++; } } c[ans]='.'; ans++; i=signa-1; j=signb-1; if(signa>signb) { while(j>=0) { sum=a[i]-'0'+b[j]-'0'+d; d=sum/10; c[ans]=sum%10+'0'; i--; j--; ans++; } while(i>=0) { sum=a[i]-'0'+d; d=sum/10; c[ans]=sum%10+'0'; i--; ans++; } } else { while(i>=0) { sum=a[i]-'0'+b[j]-'0'+d; d=sum/10; c[ans]=sum%10+'0'; i--; j--; ans++; } while(j>=0) { sum=b[j]-'0'+d; d=sum/10; c[ans]=sum%10+'0'; j--; ans++; } } if(d==1) printf("1"); for(i=ans-1; i>=0; i--) { if(c[i]=='.') break; else printf("%c",c[i]); } for(j=0; j<i; j++) { if(c[j]!='0')//切记是字符型0 break; } if(j!=i) { for(k=i; k>=j; k--) printf("%c",c[k]); } printf("\n"); } return 0;}
1 0
- nyoj A+BProblemIV
- NYOJ - A*B Problem
- NYOJ - A-B Problem
- NYOJ A*B
- NYoj A*B Problem
- nyoj 1228 A+B
- NYOJ-A^B Problem
- NYOJ-A/B Problem
- NYOJ-A+BproblemIII
- nyoj 477 a+bproblem
- NYOJ A-B Problem
- NYOJ A-B Problem
- NYOJ---A+B Problem II
- NYOJ 524 A-B Problem
- NYOJ - A problem is easy
- NYOJ - A Famous Music Composer
- NYOJ - A+B Problem II
- NYOJ 485 A*B Problem
- 面向对象的六大原则(之二)
- Spark多文件输出(MultipleTextOutputFormat)
- swift tableView registerCell基于协议的实现和使用
- Ubuntu下挂载移动硬盘拷贝数据
- UnsupportedMethodException Unsupported method: AndroidProject.getPluginGeneration().
- nyoj A+BProblemIV
- 中软国际解放号:IT服务行业的“天猫”
- C++_构造函数和析构函数
- 我想好在取吧。
- 数据库连接池技术-转载
- android EventBus的使用
- 笔记 RASL: Robust Alignment by Sparse and Low-Rank Decomposition for Linearly Correlated Images
- Android 实现 zlib压缩与解压
- oracleClient和plsql的安装