题目描述

高精度加法,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. FOJ 10月赛题 FOJ2198~2204

    A题. 发现是递推可以解决这道题,a[n]=6*a[n-1]-a[n-2].因为是求和,可以通过一个三维矩阵加速整个计算过程,主要是预处理出2^k时的矩阵,可以通过这道题 #include <i ...

  2. gcc动态链接库so的制作和使用

    http://blog.csdn.net/CSqingchen/article/details/51546784 参考: http://blog.sina.com.cn/s/blog_69e96b37 ...

  3. 网络基础篇(一)--TCP/IP协议族

    TCP/IP协议族是一个分层,多协议通信体系. 1 TCP/IP协议族体系结构 TCP/IP协议族自底而上分为四层: 数据链路层, 网络层, 传输层和应用层. 1.1 数据链路层 实现网卡接口的网络驱 ...

  4. AWS OpsWorks新增Amazon RDS支持

    AWS OpsWorks是一个应用管理服务. 你可以通过它把你的应用在一个 堆栈中定义成为不同层的集合.每一个堆栈提供了须要安装和配置的软件包信息,同一时候也能部署不论什么在OpsWorks层中定义的 ...

  5. ambarella H2 添加文件到ext4文件系统

    方法1: ambarella/rootfs目录下有skeleton(骨架)目录,此目录下就是文件系统的各个目录, [root@jz4775dev]# ls skeleton/ bin debug de ...

  6. Android 重写onBackPressed()方法 遇到的问题

    1.resultCode的值一直为0 问题描述:AActivity调用startActivityForResult()方法,启动BActivity,然后在BActivity的onBackPressed ...

  7. Android WiFi开发教程(三)——WiFi热点数据传输

    在上一篇文章中介绍了WiFi的搜索和连接,如果你还没阅读过,建议先阅读上一篇Android WiFi开发教程(二)——WiFi的搜索和连接.本篇接着简单介绍手机上如何通过WiFi热点进行数据传输. 跟 ...

  8. openStack enscaption

  9. Coursera Algorithms Programming Assignment 2: Deque and Randomized Queue (100分)

    作业原文:http://coursera.cs.princeton.edu/algs4/assignments/queues.html 这次作业与第一周作业相比,稍微简单一些.有三个编程练习:双端队列 ...

  10. 利用python+tkinter开发一个点名软件

    最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. t ...