洛谷【P1601】A+B Problem(高精)
题目传送门:https://www.luogu.org/problemnew/show/P1601
高精度加法板子。我们灵性地回忆一波小学学加法列竖式的场景(从\(6\)岁开始口算从未打过草稿的大佬请出门左转)。
我们用\(a\),\(b\)数组存加数,\(c\)数组存和。根据加法法则,\(c[i]=a[i]+b[i]\),如果\(c[i]>10\)就要进位。
然后再存一下每一个数的长度就可以了。建议用结构体,因为结构体重载运算符很舒服。
时间复杂度:\(O(len)\)
空间复杂度:\(O(len)\)
代码如下:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[505];
struct Bignum {
int num[505];
void make() {
num[0]=strlen(s+1);//num[0]存长度,num[1]存个位数,num[2]存十位数...
for(int i=1;i<=num[0];i++)
num[i]=s[num[0]-i+1]-'0';//跟快读一样处理字符
}
Bignum operator+(const Bignum &fake)const {
Bignum c;memset(c.num,0,sizeof(c.num));//记得要memset,不然就挂飞了
c.num[0]=max(num[0],fake.num[0]);//更新长度
for(int i=1;i<=c.num[0];i++) {
c.num[i]+=num[i]+fake.num[i];
c.num[i+1]+=c.num[i]/10;c.num[i]%=10;//记得是+=不是=
}
if(c.num[c.num[0]+1])c.num[0]++;//如果进位进到下一位去了那就长度++
return c;//由于最多是三个一位数相加,所以不可能加出三位数,所以只要一个if就可以了
}
void print() {
for(int i=num[0];i;i--)
printf("%d",num[i]);
}
}a,b,c;
int main() {
scanf("%s",s+1);a.make();
scanf("%s",s+1);b.make();//以字符串的形式读入再转化到数组里。
c=a+b;c.print();//重载运算符后直接输出
return 0;
}
洛谷【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(高精)
题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 输出格式: 输 ...
- 洛谷——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行 ...
随机推荐
- 九度OJ 1341:艾薇儿的演唱会 (最短路)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:528 解决:241 题目描述: 艾薇儿今天来到了中国,她计划两天后在哈尔滨举行一场个人的演唱会.由于出现了紧急情况,演唱会的举办方要求艾薇儿 ...
- H5动静分离
1. 动静分离的实现思路(类似于iOS.安卓的思路,后台提供数据接口,前端用ajax异步请求json数据,再把json数据渲染到页面) 动静分离是将网站静态资源(HTML,JavaScript,CSS ...
- js apply / call 函数
这两个函数的作用是: 将函数绑定到另外一个对象上去运行 用call和apply应用另一个函数(类)以后,当前的函数(类)就具备了另一个函数(类)的方法或是属性,这也能够称之为“继承”. functio ...
- Linux显示网络相关信息
netstat -tlun 查看本机监听的端口 netstat -an 查看本机所有的网络连接 netstat -rn 查看本机路由表 -t TCP协议 -u UDP协议 - ...
- linux里的drwxr-xr-x代表的意思
权限的计算是除去第一位字母开始,权限都是三个符号为一组合,其中-表示没有这个权限 d:第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 rwx:第2-4位表示这个文件的属主拥有的 ...
- 模仿jquery框架源码
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- Swift 闭包的简单学习
OC中已经学习了闭包 在swift里面 该怎么处理 不多说 上代码 //(num:Int) ->Bool是闭包的参数类型 func hasCloserMatch(arr :[Int], valu ...
- Zookeeper启动Permission denied
Zookeeper 查询状态,出现如下问题: JMX enabled by default Using config: /usr/zookeeper/zookeeper-/bin/../conf/zo ...
- 【leetcode刷题笔记】Max Points on a Line
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...
- Android OTA在线升级二(升级包编译原理分析) 【转】
本文转载自:http://blog.csdn.net/huryjiang/article/details/7590015 1 升级包的制作 基本命令: Ø makeMtk [project[flav ...