博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题解-洛谷P1601 A+B Problem(高精)
阅读量:5122 次
发布时间:2019-06-13

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

https://www.luogu.org/problemnew/show/P1601(题目传送)

显然数据范围超过了long long类型,故不能简单的用两个长整型存起来相加。这里用到大数据的高精度算法(加法)。

所谓高精度算法,就是先用字符串将输入存下,并把字符串倒序(方便之后处理)转换成数组,并依据小学竖式的算法思想,逐位处理计算结果(而这里高精度加法的核心就是进位)。

上代码:

1 #include
2 #include
3 #include
4 using namespace std; 5 int a[502],b[502],c[502]; 6 int main() 7 { 8 char s1[501],s2[501]; 9 cin>>s1>>s2;10 for(int i=strlen(s1)-1;i>=0;i--)11 a[strlen(s1)-i]=s1[i]-'0';12 for(int i=strlen(s2)-1;i>=0;i--)13 b[strlen(s2)-i]=s2[i]-'0';14 int i=1;15 while(i<=strlen(s1)||i<=strlen(s2))16 {17 c[i]+=a[i]+b[i];18 if(c[i]>=10)19 {20 c[i+1]++;21 c[i]%=10;22 }23 i++;24 }25 while(!c[i]&&i>1) i--;26 for(;i>=1;i--)27 cout<

最后几点提醒:

1.储存结果的数组c中开头的0不输出;若c中全是零,即两数之和为0,就只保留最后一位0输出。

2.若输入的数据中有负数,就要进行特判,并视情况转化为相应的高精度减法计算。

3.输出判断时应从两个加数最高位+1开始(防止加数最高位有进位但被忽略)。

 

转载于:https://www.cnblogs.com/InductiveSorting-QYF/p/10464393.html

你可能感兴趣的文章
类库与框架,强类型与弱类型的闲聊
查看>>
php match_model的简单使用
查看>>
SIP服务器性能测试工具SIPp使用指导(转)
查看>>
回调没用,加上iframe提交表单
查看>>
大话文本检测经典模型:EAST
查看>>
待整理
查看>>
一次动态sql查询订单数据的设计
查看>>
C# 类(10) 抽象类.
查看>>
Vue_(组件通讯)子组件向父组件传值
查看>>
jvm参数
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>
好莱坞十大导演排名及其代表作,你看过多少?
查看>>
hihocoder1187 Divisors
查看>>
Azure 托管镜像和非托管镜像对比
查看>>
js window.open 参数设置
查看>>
032. asp.netWeb用户控件之一初识用户控件并为其自定义属性
查看>>
前端监控
查看>>
clipboard.js使用方法
查看>>
移动开发平台-应用之星app制作教程
查看>>