题目要求如下:
可以看到会输入1个长度不超过30位的10进制数,与之前问题Codeup 又一版A+B[100000579]不同。因此使用一般情况下long long数据类型已经是不行的,因为long long数据类型,最大容纳的整数大小为 2 64 − 1 2^{64}-1 264−1,而此时输入的数值可能是 1 0 30 10^{30} 1030,很明显大于前者。
此时,我们可以输入1个字符串,然后将其转换为整数序列,再进行除法的模拟操作,从而解决这个问题。
这里我们定义1个结构体,其有3个成员:
typedef struct BigNumber
{
int d[1000]; // 数的序列
int len; // 长度
int r; //余数
} bign;
其中变量d是1个int数组,其里面存储对应值的序列,而len用于表示数值的长度,主要是为了方便操作,而r存储对应的余数。
我们将读取进来的字符串转换成对应的数值序列:
bign change(char *str){
bign a = {
0};
a.len = strlen