题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

输入输出样例

输入样例#1: 复制

1
1

输出样例#1: 复制

2

思路:显而易见是通过数组来模拟,之前写过类似的,直接用了,不过以前写的太差了。

#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
using namespace std;
int main()
{ //肯定不是最优的,而且还很冗长,是我太菜了
string a, b;
char c[1000]; //这里要用到char,因为我vs过不了,嘤嘤嘤
int t, i, j, lag , m, o = 1, n; //lag是进位,m是c数组的下标,用n赋值为t,下面会解释
//cin >> t;
//n = t;
//while (t--)
//{
cin >> a >> b;
m = 0; lag = 0; //下面会将两个字符串相加一直到其中一个结束,因为位数不一定相等
for (i = a.size() - 1, j = b.size() - 1; i >= 0 && j >= 0; i--, j--)
{ //size函数是计算字符串长度的
c[m] = a[i] + b[j] - 48 + lag; //根据asc码来运算,lag为进位
lag = 0; //赋值0,只有有进位时才为1
if (c[m]>57)
{
c[m] -= 10;
lag = 1;
}
m++;
}
if (a.size() == b.size()) //如果字符串长度相等,证明已经相加结束,只判断最高位是否有进位
{
if (lag) //如果有,那么最高位只会为1
c[m++] = 49;
}
if (a.size()>b.size()) //如果第一个字符串长,那么继续拿进位和第一个字符串相加,
{ //比如说123+9,3与9相加后,1,2要继续和进位相加
if (lag) //两种情况,第一种,有进位
{
for (; i >= 0; i--) //i不用赋初值,因为i即为上次相加的位置
{
c[m] = a[i] + lag;
if (c[m] > 57) //这里应该不难理解
{
c[m] -= 10;
lag = 1;
}
else
lag = 0;
m++;
}
if (lag) //这是最高位计算后,再判断最高位是否有进位
c[m++] = 49;
}
else //第二种情况,没有进位,则保持原值不用再计算
{
for (; i >= 0; i--)
c[m++] = a[i];
}
}
if (a.size()<b.size()) //当第二个字符串位数较多时同上
{
if (lag)
{
for (; j >= 0; j--)
{
c[m] = b[j] + lag;
if (c[m] > 57)
{
c[m] -= 10;
lag = 1;
}
else
lag = 0;
m++;
}
if (lag)
c[m++] = 49;
}
else
{
for (; j >= 0; j--)
c[m++] = b[j];
}
}
//cout << "Case " << o << ":" << endl; //最后要说一下输出,要严格按照题目要求,注意数字间有空格
//cout << a << " + " << b << " = ";
for (i = m - 1; i >= 0; i--)
cout << c[i];
cout << endl; //每组数据最后都要换行,endl就是换行的意思,但每两组数据间要空上一行
//if (o<n) //所以要用到n,假如有3组数据,o初值为1,所以只有为1,2时才空行,即1与2,2与3之间空行
//cout << endl;
//o++;
//}
return 0; //光A题题解就写到12点了,睡觉喽
}

洛谷P1601 A+B Problem(高精)的更多相关文章

  1. 洛谷 P1601 A+B Problem(高精)

    P1601 A+B Problem(高精) 题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式 ...

  2. 【洛谷P1601 A+B Problem(高精)】

    题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 ...

  3. 题解-洛谷P1601 A+B Problem(高精)

    https://www.luogu.org/problemnew/show/P1601(题目传送) 显然数据范围超过了long long类型,故不能简单的用两个长整型存起来相加.这里用到大数据的高精度 ...

  4. 洛谷——P1601 A+B Problem(高精)

    https://www.luogu.org/problem/show?pid=1601#sub 题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑 ...

  5. Java实现 洛谷 P1601 A+B Problem(高精)

    import java.util.*; import java.math.*; public class Main { public static void main(String args[]) { ...

  6. 洛谷1601 A+B Problem(高精) 解题报告

    洛谷1601 A+B Problem(高精) 本题地址:http://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b pro ...

  7. 洛谷1303 A*B Problem 解题报告

    洛谷1303 A*B Problem 本题地址:http://www.luogu.org/problem/show?pid=1303 题目描述 求两数的积. 输入输出格式 输入格式: 两个数 输出格式 ...

  8. 洛谷1001 A+B Problem

    洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|< ...

  9. 洛谷P1865 A % B Problem

    1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...

随机推荐

  1. IntelliJ IDEA中出现could not auto wired错误提示处理方式

    IntelliJ IDEA中出现could not auto wired错误提示处理方式 程序可以正常运行,就是出现错误提示: 学习了:http://blog.csdn.net/xlxxybz1314 ...

  2. IOS_OC_Category

    1.Category概述 那的Category的使用场景有那些呢: 1.类包括了非常多个方法实现,而这些方法须要不同团队的成员来实现 2.当你在使用基础类库中的类时,你不想继承这些类而仅仅想加入一些方 ...

  3. 运用smali自己主动注入技术分析android应用程序行为

    如今android开发人员社区里,除了app开发外,还有非常多周边的工具类产品,比方安全.性能等,app产品 已经出现了巨无霸,可是工具类的产品.眼下还没有出现规模比較大的公司,大部分还处于创业阶段, ...

  4. 我对ThreadLocal的理解

    声明:小弟菜狗一个.对ThreadLocal的描写叙述和理解难免有所偏差 近期由于须要深入的了解android的handler消息机制而去查看了Looper的源代码.众所周知在主线程中是不须要在程序猿 ...

  5. HDU 3887 Counting Offspring(DFS序+树状数组)

    Counting Offspring Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  6. B1045 糖果传递 数学

    糖果传递,一开始就想到了n^2的模拟贪心算法,但是一看,数据范围太大,好像只有O(N)能过...没啥方法,只好看题解,之后发现,woc,还有这种操作? 这个题直接可以用数学证明... 证明如下: 首先 ...

  7. RCF:一个相当不错的C++分布式RPC框架

    RCF(远程调用框架)是一个可以移植的C++进程间通信框架,使用C++语言特性,提供了一个简单高效的编写分布式C++软件的途径.RCF利用编译时多态清晰分开了接口和实现. 和传统的RPC框架如CORB ...

  8. 如何对HTMLTestRunner 进行输出print 进行修改

    在 HTMLTestRunner 模块中,在运行代码后,在输入的html页面值出现了特别简单的一个页面,那么现在如何将HTML页面中输出的更多print 在 HTMLTestRunner.py文件中查 ...

  9. Ionic学习记录(一):ionic及cordova安装、创建第一个应用、项目结构

    目录: 一.ionic的安装 二.创建第一个应用程序 三.浏览器中预览应用 四.项目结构 五.添加页面 一.ionic的安装 使用Ionic创建和开发应用程序主要通过Ionic命令行实用程序(“CLI ...

  10. S - New Year Transportation

    Problem description New Year is coming in Line World! In this world, there are n cells numbered by i ...