可以有两种方法来求解。
设这个大整数为A
100个1组成的大整数为 (10¹⁰⁰-1)/9,200个2组成的大整数为 (10²⁰⁰-1)/9*2
所以,A = (10¹⁰⁰-1)/9*10²⁰⁰+(10²⁰⁰-1)/9*2
方法一,直接用大整数除法。
用手工计算当然没问题,但是比较费事,也容易出错。可以编程计算。
计算结果:
mod(A,55) = 22
mod(A,72) = 14
fortran代码和运行结果如下:直接调用了大整数模块,所以代码异常简单
方法二,运用余数定理。
运用余数定理,在构建大整数A的过程中迭代计算余数,求得最终结果。
令 k=0;
k=k*10+1,求 k 除以55的余数,即 k=mod(k,55),如此进行100次;
k=k*10+2,求 k 除以55的余数,即 k=mod(k,55),如此进行200次;
最后结果为 22,即为A除以55的余数;
同理,也可以求的A除以72的余数为14。
计算过程中,会发现,k有周期变化规律;利用规律可以简化中间环节计算,跳过若干相同周期。
当然,方便起见,也是编程解决最为省力,也不容易出错。
下面是fortran代码及其运行结果: