一个整数的每位数字都是1,至少多少位才能使这个数被1987整除呢?

来源:百度知道 编辑:UC知道 时间:2024/06/11 08:29:13
告诉我用PASCAL编程,要怎么想?思路?
1. 设i=11111
2. i除以1987,如果余数为0,则表示成功,去到第4步。
3. i=i*10+1,回到第2步。
4. 返i回。
这样子做绝对是超时掉了,算不出来的

我觉得得用高精度,用普通类型一般存不下来,再用这种方法:
1. 设i=11111
2. i除以1987,如果余数为0,则表示成功,去到第4步。
3. i=i*10+1,回到第2步。
4. 返i回

我不会这个PASCAL语言,所以只能给你思路:



按照除法竖式的做法,依次算出每一步的商,和减完之后的结果。

使用两个变量:这一位的商a,和这一次减完的结果b。

另外来个用于数数的变量i


首先赋值i=4,b=1111

然后开始循环:

{

i自加1;

b=b×10+1;//这一步相当于把原来的b末尾添一个1

找到一个0~9之间的a,使得b-a×1987大于等于0小于1987   ; //即除法中的试商过程。编程的话,这步可以用循环来跑

b=b-a  ;//相当于除法竖式中减法的那一步

}

当b=0时循环结束。看当时的 i 是多少,就共有多少个1。




附件的excle表格是这个过程的模拟:A列相当于上面的a,B列相当于上面的b

这个附件中的A列数值,是我一位一位手动估算得到的:


结果的商有328位,对应的被除数有332位。



1. 设i=11111
2. i除以1987,如果余数为0,则表示成功,去到第4步。
3. i=i*10+1,回到第2步。
4. 返i回。

用浪潮天梭