主题:[讨论]这道题对小弟有点困难,谁能帮助我?谢谢.
interegg
[专家分:80] 发布于 2006-08-26 09:12:00
编程求最小正整数M,N(0<N<M)为何值时,1989m与1989n的最后三位数字相同.谢谢.
回复列表 (共11个回复)
沙发
贺天行宝 [专家分:2300] 发布于 2006-08-26 09:25:00
我随便写一个
for m:=1 to 1000 do
for n:=1 to 1000 do
if (1989*m mod 1000=1989*n mod 1000) then begin writeln(m,' ',n); exit; end;
板凳
interegg [专家分:80] 发布于 2006-08-26 10:47:00
如果是在1000以外呢?谢谢.
3 楼
fcffc [专家分:50] 发布于 2006-08-26 11:14:00
m=0
x=0
while x=0 do
begin
m:=m+1
n=0
while x=0 do
begin
n:=n+1
if (1989*m mod 1000=1989*n mod 1000) then begin writeln(m,' ',n);
x:=1
end;
end;
4 楼
济公二世 [专家分:200] 发布于 2006-08-26 21:56:00
3楼你这个程序是不行的, 你检查一下.
我觉得这道题用高精度做才行.可我不会.
5 楼
interegg [专家分:80] 发布于 2006-08-27 09:35:00
小弟不才,问一下,高精度我知道,但是具体算法是这样的呢?有两个数,我就搞昏了.谢谢.
6 楼
贺天行宝 [专家分:2300] 发布于 2006-08-27 17:43:00
?????不要高精度阿!实在不行用int64阿!
7 楼
interegg [专家分:80] 发布于 2006-08-28 08:00:00
int64 是什么啊?
8 楼
lmj9201 [专家分:1400] 发布于 2006-08-29 12:27:00
int64就是fp里一个最大的整型变量,我记得好像是可以存储19还是18位,反正很大就对了,而且这题求后3位,你只要n的后三位×989就可以了
用整型就可以了
9 楼
lmj9201 [专家分:1400] 发布于 2006-08-29 12:27:00
我的程序和贺天的差不多,稍微改了点
for n:=1 to 999 do
for m:=n to 999 do
if (989*m mod 1000=989*n mod 1000) then
begin
writeln(m,' ',n);
exit;
end;
10 楼
interegg [专家分:80] 发布于 2006-08-29 16:48:00
fp是什么呢?这道题我自己解出来了,有数学规律的,不用这么麻烦的.
我来回复