主题:编程求解:求2009个1997的乘积的最后两位数是多少?
zizz大牛
[专家分:0] 发布于 2009-07-28 11:07:00
如题,求2009个1997的乘积的最后两位数是多少?
我想应该不是高精度。。。
回复列表 (共8个回复)
沙发
无所不能 [专家分:270] 发布于 2009-07-28 13:29:00
先算1997*1997 中7和97相乘,取最后两位,重复这个工作,最后 的结果就是要求的
板凳
tzhlryy [专家分:270] 发布于 2009-08-01 10:01:00
什么也别做,计算后两位就行了
var
i,j,n,m,x,y:integer;
begin
read(x,y);
n:=x mod 100;(n:=97)//由于只计算后两位,前面的19就没有用
for i:=1 to y(2009) do
begin
m:=n*n;
m:=m mod 100;
end;
if m<10 then write ('0',m) else write(m);//最大的重点就在于电脑会把09(或其他小于十的数)看成9,所以在输出时如果m<10(也就是只输出1位数)时要补一个‘0’,否则不符和输出格式)
end.
如果LZ有够变态的话,高精度我也会
3 楼
chip [专家分:80] 发布于 2010-07-14 22:22:00
89
4 楼
chip [专家分:80] 发布于 2010-07-14 22:26:00
//水题,答案为89!
program four;
var
i,j:longint;
begin
j:=1;
for i:=1 to 2009 do begin
j:=j*2009;
if j>=100 then j:=j-100*(j div 100);
end;
if j>=10 then writeln(j);
readln;
readln;
end.
5 楼
小田甜 [专家分:3910] 发布于 2010-07-15 17:16:00
begin writeln(9*97 mod 100 div 10,9*97 mod 10) end.
6 楼
cgl_lgs [专家分:21040] 发布于 2010-07-16 10:36:00
其实问题就是:
a|b=m1
c|b=m2
a*c|b=m1*m2|b
C++区也讨论了类似的问题,是数论的东东:)
7 楼
jiaoqiang5428 [专家分:0] 发布于 2010-10-29 21:05:00
你的有错误吧?
j:=j*2009?
不应该是j:=j*1997?[em10]
8 楼
pascal编游戏 [专家分:300] 发布于 2010-11-01 18:06:00
说实在的,这根本算不上合格的编程题目,只是一个数学题。数论学好一点都会做。
正如6L所说的,同余有这么一个性质:(“==”表示同余)
a==a'(mod n)
b==b'(mod n)
a*b==a'*b'(mod n)
1997==97(mod 100)
所以说,每次用97*上一次的结果,并把这个结果div 100即可。
我来回复