洛谷P1601 A+B Problem(高精)
题目描述
高精度加法,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(高精)的更多相关文章
- 洛谷 P1601 A+B Problem(高精)
P1601 A+B Problem(高精) 题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式 ...
- 【洛谷P1601 A+B Problem(高精)】
题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 ...
- 题解-洛谷P1601 A+B Problem(高精)
https://www.luogu.org/problemnew/show/P1601(题目传送) 显然数据范围超过了long long类型,故不能简单的用两个长整型存起来相加.这里用到大数据的高精度 ...
- 洛谷——P1601 A+B Problem(高精)
https://www.luogu.org/problem/show?pid=1601#sub 题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑 ...
- Java实现 洛谷 P1601 A+B Problem(高精)
import java.util.*; import java.math.*; public class Main { public static void main(String args[]) { ...
- 洛谷1601 A+B Problem(高精) 解题报告
洛谷1601 A+B Problem(高精) 本题地址:http://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b pro ...
- 洛谷1303 A*B Problem 解题报告
洛谷1303 A*B Problem 本题地址:http://www.luogu.org/problem/show?pid=1303 题目描述 求两数的积. 输入输出格式 输入格式: 两个数 输出格式 ...
- 洛谷1001 A+B Problem
洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|< ...
- 洛谷P1865 A % B Problem
1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...
随机推荐
- nginx安装【linux下安装】
nginx下载安装 http://nginx.org/en/download.html 点击右键,复制链接http://nginx.org/download/nginx-1.14.2.tar.gz c ...
- [Java]LeetCode57 Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- hdu 2586(Tarjan 离线算法)
How far away ? Time Limi ...
- iOS中的数据库—使用FMDB
一.回顾 iOS中的数据存储方式 1.XML属性列表(plist) 写入OC的一些基本数据类型,不是所有对象都可以写入 2.Preference(偏好设置) 本质还是通过“plist”来存储数据,但是 ...
- 第14课 SourceTree程序操作介绍
http://www.atlassian.com/software/sourcetree/overview https://www.microsoft.com/net/framework/versio ...
- POJ 1082---->一个神一般的题
代码只有10行,反正我是看了题解才知道的. 嗯 首先 看到这个题, BFS+一堆判断(什么平年闰年跨年各种乱搞肯定能搞出来,但是Code length就不一定了)... 然后呢 就看到了这个题解 从后 ...
- 3.sql基础
sql语句是和dbms交谈专用的语句,不同dbms都认sql语法 sql语句中字符串用单引号 sql语句是大小写不敏感的,不敏感指的是sql关键字,字符串值还是大小写敏感的 创建表.删除表不仅可以手工 ...
- iphone(苹果)手机浏览器顶部下拉出现网页源
在苹果手机下拉页面,会出现类似上图那样,具体方法如下: function handler(){//禁止默认滑动函数 event.preventDefault();}document.addEventL ...
- 【系列】Java多线程初学者指南(1):线程简介
原文地址:http://www.blogjava.net/nokiaguy/archive/2009/nokiaguy/archive/2009/03/archive/2009/03/19/26075 ...
- Eclipse之注释部分代码
有时为了调试,部分代码需要注释掉,如果一行一行的加注释符特别麻烦. 一.快捷键:ctrl+/ 选择需要注释的部分,点Ctrl+/,这段代码前,自动加注释语. 取消注释也是按Ctrl+/ 步骤: 选择需 ...