【洛谷】高精度算法
2020-04-05 12:15
16 查看
高精度算法
题目描述
高精度加法,相当于a+b problem,不用考虑负数.
输入格式
分两行输入。a,b<=10^{500}a,b<=10
500
输出格式
输出只有一行,代表a+b的值
输入 #1
1
1
输出
2
说难不难,就是数字太长,导致编译器自带的+ - * /只对int long有效,而超限就会乱码。这时候引入string,算法思路和笔算一样,从最后一个开始加并且进位
这时候需要将2个string类进行比较,短的后面加0补齐,然后反转相加,再反转输出即可,代码如下:
">using namespace std; int main() { string s1,s2,s3; //举例 s1为99 s2为111 cin>>s1; cin>>s2; int len; //例为3 len=max(s1.length(),s2.length()); //较长的长度 reverse(s1.begin(),s1.end()); //反转s1 reverse(s2.begin(),s2.end()); //反转s2 for(int i=s1.length();i<len;i++) { s1+='0'; } //s1变为990 for(int i=s2.length();i<len;i++) { s2+='0'; } //s2 111 int a=0; //定义a为进位数 如7+8进1 a=1 for(int i=0;i<len;i++) { int k; k=a+(s1[i]-'0')+(s2[i]-'0'); //加进位求和 s3+=(k%10)+'0'; //对10取余 a=k/10; //进位 } if(a) //若最后a不位0 直接最高位为a 例如99+111=1010 s3+=a+'0'; reverse(s3.begin(),s3.end()); //反转即可 cout<<s3; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 洛谷 1604——B进制星球(高精度算法)
- 洛谷 1156 dp
- [USACO5.3]巨大的牛棚Big Barn && 洛谷【p1387】最大正方形(动态规划)
- 【洛谷 P1371】NOI元丹(枚举+乱搞)
- 洛谷P2984 [USACO10FEB]给巧克力Chocolate Giving
- 洛谷小题
- 洛谷P1311 选择客栈
- 洛谷 P1365 服务器储存信息问题
- (洛谷)【P1141】01迷宫 [广度搜索][高性能]
- 2016.11.2 第二题 洛谷1565
- 洛谷 2186 小Z的栈函数
- 洛谷 P1103 书本整理
- Codevs 1540+洛谷1196 银河英雄传说
- 洛谷 P1661 扩散
- 洛谷 P1122 最大子树和
- 洛谷 P1418 选点问题
- 洛谷1082 同余方程
- 洛谷 P1416 攻击火星
- 洛谷 [P1182] 数列分段
- 洛谷P2320 [HNOI2006]鬼谷子的钱袋