题目传送门: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(高精)的更多相关文章

  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(高精)

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

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

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

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

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

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

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

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

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

  9. 洛谷1001 A+B Problem

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

  10. 洛谷P1865 A % B Problem

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

随机推荐

  1. nginx 基础配置详解

    #本文只对nginx的最基本配置项做一些解释,对于配置文件拆分管理,更详细的集群健康检查的几种方式,检查策略等在此不做详细解释了. #运行用户user nobody;#启动进程,通常设置成和cpu的数 ...

  2. SDOI2017第一轮

    本蒟蒻表示终于$AC$了$SDOI2017\text{第一轮}$! 兴奋! 附上各个题的题解: $DAT1$: $T1$: BZOJ4816: [Sdoi2017]数字表格 $T2$: BZOJ481 ...

  3. c++得到本地username和IP

    bool CDlgResetAlarmInfo::GetLocalUserNameAddIP(CString &a_lstrUserName ,CString &a_IpStr) { ...

  4. 数组的includes操作

    数组实例的 includes() Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似.ES2016 引入了该方法. [ ...

  5. python基础14 ---函数模块5(模块和包)

    模块与包 一.模块 1.模块是怎么诞生的. 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到 不同的文 ...

  6. 关于随机浏览头伪装fake-UserAgent

    使用: from fake_useragent import UserAgent ua = UserAgent() #ie浏览器的user agent print(ua.ie) Mozilla/5.0 ...

  7. Shiro:学习笔记(1)——身份验证

    Shiro——学习笔记(1) 1.核心概念 1.Shiro不会自己去维护用户.维护权限:这些需要我们自己去设计/提供:然后通过相应的接口注入给Shiro.2.应用代码直接交互的对象是Subject,也 ...

  8. Python stdout

    (1)stdout 与 print 当我们在 Python 中打印对象调用 print obj 时候,事实上是调用了 sys.stdout.write(obj+'\n') print 将你需要的内容打 ...

  9. dev系列之gridview

    gridview新增一行就激活编辑,及显示闪动的光标 gridView1.ShowEditor(); 隐藏Gridview表头上面的panel this.gridView1.OptionsView.S ...

  10. vmstat测试

    vmstat测试:场景:tar -zvcf 2_104.tar.gz ./* 打包压缩3GB+文件 [root@localhost opt]# vmstat 1 1000procs --------- ...