#4338. CSP 2022 高精度题型
CSP 2022 高精度题型
1 #include <iostream>
2 #include <cstring>
3 using namespace std;
4
5 struct HugeInt{
6 int len;
7 int num[100001];
8 };
9 HugeInt a, b, w;
10 char c[100001],d[100001];
11 void Scan_HugeInt(){
12 cin>>c;
13 cin>>d;
14 a.len=strlen(c);
15 b.len=strlen(d);
16 for(int i=0: i<a.len; i++)
17 ①;
18 for(int i=0; i<b.len; i++)
19 ②;
20 }
21 void Plus(){
22 w.len=max(a.len,b.len);
23 for(int i=1; i<=w.len; i++) (
24 w.num[i] +=③;
25 w.num[i+1] +=④;
26 w.num[i]%=10;
27 }
28 if(⑤)
29 w.len ++;
30 }
31
32 int main() {
33 Scan_HugeInt();
34 Plus();
35 for(int i=w.len; i>=1; i--)
36 cout <<w.num[i];
37 cout <<endl;
38 return 0;
39 }
(高精度计算)由于计算机运算的数据范围表示有一定限制,如整型int表达范围是(-2^31~2^31-1),unsigned long(无符号整数)是(0~2^32-1),都约为几十亿,因此在计算位数超过十几位的数时,不能采用现有类型,只能自己编程计算。 高精度计算通用方法:高精度计算时一般用一个数组存储一个数,数组的一个元素对应于数的一位,将数由低位到高位依次存储在数组下标对应的由低到高的位置上。另外,申请数组大小时,一般考虑了最大的情况,在很多情况下表示有富裕,即高位有很多0,可能造成无效的运算和判断,因此一般利用一个整型数据存储该数的位数。下面的程序是一个高精度整数的加法运算,请补充完整程序。
1、
①处应该填( )
{{ select(1) }}
- a.num[i]=c[i]-‘0’
- a.num[a.len-i]=c[i]-‘0’
- a.num[a.len]=c[i]
- a.num[i]=c[i]
2、
②处应该填( )
{{ select(2) }}
- b.num[i]=d[i]
- b.num[b.len-i]=d[i]
- b.num[b.len-i]=d[i]-‘0’
- b.num[i]=d[i]-‘0’
3、
③处应该填( )
{{ select(3) }}
- (a.num[i]+b.num[i])
- (a.num[i]+b.num[i])%10
- (a.num[i]%10+b.num[i]%10)
- (a.num[i]+b.num[i]-10)
4、
④处应该填( )
{{ select(4) }}
- w.num[i]/10
- w.num[i]
- w.num[i]%10
- w.num[i]-10
5、
⑤处应该填( )
{{ select(5) }}
- w.num[w.len+1]>=0
- w.num[w.len+1]==0
- w.num[w.len+1]!=0
- w.num[w.len +1]>1