某自然数与396的乘积的末尾是888888,这个自然数最小是几

来源:百度知道 编辑:UC知道 时间:2024/07/03 00:11:51

85578

附源程序:
#include <iostream>

int main()
{
bool flag = false;
long num = 0;
long result;
unsigned int length = 1000000;

while(!flag)
{
result = num * 396;

if(result % length == 888888)

{
std::cout<<num<<std::endl;
std::cin>>length;
flag = true;
}
num++;
}
return 0;
}

85578.

设所求自然数与396的乘积是10^6*x+888888,则396能整除10^6*x+888888,396=2^2*3^2*11,888888=8*11*3*3367,
故11与3均能整除10^6*x,也均能整除x,能被11与3整除的最小正整数是33,即x=33,则经验证33888888是能被396整除的自然数,故所求的满足条件的最小自然数应是33888888/396=85578.

396=4×9×11,即要求乘积能被4、9和11整除。

能被4整除的数,要求最后两位能被4整除。末尾是88,已经满足。
能被9整除的数,各位数字和能被9整除。现在各位数字和是8×6=48不能被9整除。
能被11整除的,奇数位的数字和与偶数位数字和之差能被11整除。现在奇数位数字和与偶数位数字和都是24。差是0,可以被11整除。

因为现在不能被9整除,必须在左边增加数位,显然只增加一个非0数字,可以满足被9整除,但不能被11整除,因为无论增加哪个数字,奇数位和与偶数位和都不能被11整除。所以至少要增加2位数字。