3.有个数是111...1222...+2(一共100+个1和200个2)个数除以55、72的余数?

如题所述

可以有两种方法来求解。

设这个大整数为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代码及其运行结果:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-27
首先,我们可以将这个数表示成两个部分相加:111...1 和 222...2。
其中,111...1 一共有 100 个 1,可以用等差数列求和公式计算出它的值:
111...1 = 1 × (10^99 + 1) / 9
同理,222...2 一共有 200 个 2,可以用等差数列求和公式计算出它的值:
222...2 = 2 × (10^199 + 1) / 9
因此,原数可以表示为:
(1 × (10^99 + 1) / 9) + (2 × (10^199 + 1) / 9)
接下来,我们需要求出这个数除以 55 和 72 的余数。
由于 55 = 5 × 11,而且 10^n mod 11 = 1 或 -1(n 为正整数),因此有:
10^99 mod 11 = 10^199 mod 11 = 1
因此,可以得到:
(1 × (10^99 + 1) / 9) + (2 × (10^199 + 1) / 9) ≡ (1/9 + 2/9) mod 11 ≡ 3/9 ≡ 1/3 (mod 11)
根据同余的性质,我们可以将除数 55 和 72 分别分解成质因数的积,然后再分别对原数取模:
(1 × (10^99 + 1) / 9) + (2 × (10^199 + 1) / 9) ≡ (1 + 2 × 8^k) mod 55
(1 × (10^99 + 1) / 9) + (2 × (10^199 + 1) / 9) ≡ (1 + 2 × 8^k) mod 72
其中,k 是满足以下条件的最小正整数:
10^k ≡ 1 (mod 55) 且 10^k ≡ 1 (mod 72)
可以通过计算得到 k = 20。
因此,我们只需要计算 2 × 8^20 + 1,并对 55 和 72 取模即可得到原数除以 55 和 72 的余数。具体地:
2 × 8^20 + 1 ≡ 27 (mod 55)
2 × 8^20 + 1 ≡ 49 (mod 72)
因此,原数除以 55 和 72 的余数分别为 27 和 49。本回答被网友采纳