大明A+B
来源:互联网 发布:周杰伦 红模仿知乎 编辑:程序博客网 时间:2024/04/30 20:43
大明A+B
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 12479 Accepted Submission(s): 4536Problem Description话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。Input本题目包含多组测试数据,请处理到文件结束。每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。Output请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。Sample Input1.1 2.91.1111111111 2.34443233431 1.1Sample Output43.45554344542.1
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define MAX 410using namespace std;int main(){ int w1,w2,l1,l2,p;//w1,w2分别表示第一个数和第二个数小数点的位置,l1,l2分别表示数字的长度,p表示进位 int i,j,k; char n1[MAX],n2[MAX]; int n[MAX],m[MAX]; while(~scanf("%s %s",n1,n2)) { memset(n,0,sizeof(n));//初始化 memset(m,0,sizeof(m)); l1=strlen(n1);l2=strlen(n2); for(i=0;i<l1;i++)//获取两个数小数点的位置 { if(n1[i]=='.') { w1=i; break; } } if(i==l1)//若为整数补全小数部分 { w1=l1; n1[w1]='.'; n1[w1+1]='0'; l1=l1+2; } for(i=0;i<l2;i++) { if(n2[i]=='.') { w2=i; break; } } if(i==l2) { w2=l2; n2[w2]='.'; n2[w2+1]='0'; l2=l2+2; } //求小数部分(直接相加) k=0;p=0; for(i=w1+1;i<l1;i++) { m[k]=n1[i]-'0'; k++; } k=l2-w2-2; for(i=l2-1;i>w2;i--) { m[k]+=(n2[i]-'0')+p;; p=m[k]/10; m[k]=m[k]%10; k--; } //求整数部分 k=0; for(i=w1-1,j=w2-1;i>=0&&j>=0;i--,j--) { n[k]+=n1[i]-'0'+n2[j]-'0'+p; p=n[k]/10; n[k]=n[k]%10; k++; } for(i=i;i>=0;i--) { n[k]+=n1[i]-'0'+p; p=n[k]/10; n[k]=n[k]%10; k++; } for(j=j;j>=0;j--) { n[k]+=n2[j]-'0'+p; p=n[k]/10; n[k]=n[k]%10; k++; } if(p!=0) { n[k]=p; k++; } for(i=MAX-1;i>=0;i--)//求要输出的不为0的数开始的位置 { if(n[i]!=0) break; } if(i!=-1)//把整数输出 { for(k=i;k>=0;k--)//此处不能用i,否则会影响下面的数i的判断 { printf("%d",n[k]); } } for(j=MAX-1;j>=0;j--) { if(m[j]!=0) break; } if(i==-1&&j==-1)//如果全部为0,直接输出0 { printf("0\n"); } if(i==-1&&j>=0)//只有小数的时候输出前提 { printf("0."); for(k=j;k>=0;k--) { printf("%d",m[k]); } } if(i>=0&&j!=-1)//分别分情况讨论 { printf("."); for(k=0;k<=j;k++) { printf("%d",m[k]); } } printf("\n"); } return 0;}
0 0
- 大明A+B hdu1753
- hdu1753----大明A+B
- hdu1753 大明A+B
- hdu1753大明A+B
- 大明A+B
- hdu1753 大明A+B
- hdu1753大明A+B
- HDU_1753大明A+B
- 大明A+B
- 大明A+B
- HDU 大明A+B
- 1573 大明A+B
- 大明A+B
- hdoj1753大明A+B
- 大明A+B
- 大明A+B
- 大明A+B
- hdu1753 大明A+B
- Linux下vim的部分简单用法
- Scapy Sniffer的filter语法
- 【MySQL】计算 TPS,QPS 的方式
- 批量部署工具Fabric
- gdufe acm 1121 Fibonacci数
- 大明A+B
- 2017年新春报喜!热烈祝贺王家林老师大数据经典著作《SPARK内核机制解析及性能调优》 畅销书籍 出版上市!
- 算法复习------求数组的最大子序列
- p1057 数的计算
- Scapy Sniffer的用法
- 2017年1月20日 课堂笔记
- 哈理工 hrbust 1019
- HDU 1000【A+B Problem】
- 292. Nim Game