7 条题解
-
1
T2 a+b的
题解对于初学者,我们可以使用心算
(
cout<<a+b<<endl;)。而这是利用数组模拟现实中的竖式计算完成的加法。
是的没错就是你小学学的那个在这篇代码里我使用了函数,所以逐个函数进行解析:一,
void clear(int a[]): 就像它的名字一样, 函数的作用是清空数组。二,
void read(int a[]): 定义一个字符串 ,通过字符串类型数值对字符'0'做减法来把读入的字符串转化成数字,存到 数组里去。三,
void print(int a[]): 相信对C语言以及C与C++相通的部分有所了解的同学们一定对printf()这个函数不陌生吧,这里 就是对答案先加上一个字符'0',再用putchar()从标准输出输出一个字符串答案。四,
add(int a[], int b[], int c[])高精度加法的核心,将字符串 , 通过模拟竖式计算做加法,把答案存在数组 里面。#include<bits/stdc++.h> using namespace std; const int len = 1000004; int a[len], b[len], c[len]; void clear(int a[]) { for (int i = 0; i < len; ++i) a[i] = 0; } void read(int a[]) { static char s[len + 1]; scanf("%s", s); clear(a); int len = strlen(s); for (int i = 0; i < len; ++i) a[len - i - 1] = s[i] - '0'; } void print(int a[]) { int i; for (i = len - 1; i >= 1; --i) if (a[i] != 0) break; for (; i >= 0; --i) putchar(a[i] + '0'); putchar('\n'); } void add(int a[], int b[], int c[]) { clear(c); for (int i = 0; i < len - 1; ++i) { c[i] += a[i] + b[i]; if (c[i] >= 10) { c[i + 1] += 1; c[i] -= 10; } } } int main() { read(a); read(b); add(a, b, c); print(c); return 0; } //by hina //BlueArchive!高精度好玩捏
信息
- ID
- 2
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 630
- 已通过
- 278
- 上传者