博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDOJ 1753 大明A+B
阅读量:6580 次
发布时间:2019-06-24

本文共 2919 字,大约阅读时间需要 9 分钟。

Problem Description
话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。
现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。
 

 

Input
本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。
 

 

Output
请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。
 

 

Sample Input
1.1 2.9 1.1111111111 2.3444323343 1 1.1
 

 

Sample Output
4 3.4555434454 2.1
这道题有点小麻烦,交了好几次wa   很多小陷阱  注意考虑全面啊。。。。
View Code
#include
#include
int main(){ int a[420], b[420], c[900]; int len1, len2, x, y, i, j, k, x1, y1, flag; char str1[420], str2[420],u,v; while(scanf("%s%c%s%c",str1,&u,str2,&v) != EOF) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c)); len1 = strlen(str1); len2 = strlen(str2); flag=0;//flag的作用通过x = len1;y = len2;实现 for(i = 0; i < len1; i++) { if(str1[i] >= '0' && str1[i] <= '9') a[i]=str1[i] - '0'; else { x = i; flag = 1; } } if(flag == 0) { x = len1; } flag = 0; for(i = 0; i < len2; i++) { if(str2[i] >= '0' && str2[i] <= '9') b[i] = str2[i]-'0'; else { y = i; flag = 1; } } //寻找小数点位置并转化字符串 if(flag == 0) { y = len2; } if(len1-x > len2-y) { x1 = len1 - 1; y1 = y + len1 - x - 1; j = 450 + len1 - x - 1; } else { x1 = x + len2 - y - 1; y1 = len2 - 1; j = 450 + len2 - y - 1; } if(j < 450) j = 450;//j必须大于450,否则其小数部分为0; k = j; for(;x1 > x; x1--,y1--) { c[k] += a[x1] + b[y1]; if(c[k] > 9) { if(k==451) c[k-2]++;//小数位向整数位进一位时 else c[k-1]++; c[k] -= 10; } k--; } //先处理小数部分 k=449; for(x1 = x-1, y1 = y-1; x1 >= 0||y1 >= 0; x1--,y1--) { c[k] += a[x1] + b[y1]; if(c[k] > 9) { c[k-1]++; c[k] -= 10; } k--; } //后处理整数部分 for(i = 0; i <= 449; i++) { if(c[i] != 0) break; } if(i == 450) printf("0");//整数为0时 else for(; i <= 449; i++) printf("%d",c[i]); for(k = j; k >= 451; k--) if(c[k] != 0) break; if(k == 450) printf("\n");//小数为0时,无小数点 else { printf("."); for(i = 451; i <= k; i++) printf("%d",c[i]);//输出小数 printf("\n"); } } return 0;}

 

转载于:https://www.cnblogs.com/wanglin2011/archive/2012/07/25/2607987.html

你可能感兴趣的文章
JavaScript 特殊效果代码
查看>>
【?】codeforces721E Road to Home(DP+单调队列)
查看>>
MySQL 仅保留7天、一个月数据
查看>>
Diff Two Arrays
查看>>
下拉菜单
查看>>
[清华集训2014]玛里苟斯
查看>>
【MVC+EasyUI实例】对数据网格的增删改查(上)
查看>>
Project Euler 345: Matrix Sum
查看>>
你可能不知道的技术细节:存储过程参数传递的影响
查看>>
.htaccess 基础教程(四)Apache RewriteCond 规则参数
查看>>
UVM中的class--2
查看>>
ORACLE 存储过程异常捕获并抛出
查看>>
root用户重置其他密码
查看>>
Oracle推断值为非数字
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
从JDK源码角度看Short
查看>>
五年 Web 开发者 star 的 github 整理说明
查看>>
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo
查看>>
中台之上(五):业务架构和中台的难点,都是需要反复锤炼出标准模型
查看>>