Pascal编程 一个数n的n次方的后三位

问题描述:

Pascal编程 一个数n的n次方的后三位
输入一个数n,求这个数的n次方的后三位(如输入20259,求这个数的20259次方的后三位)由于数过大,可在每次乘后mod 1000(这句话我看不懂)
1个回答 分类:综合 2014-09-28

问题解答:

我来补答
每次乘后mod 1000,其实就是求它的后三位,为什么只要后三位就可以了呢?因为如果要求n的n次方的后三位,与它的第四位、第五位等等是无关的,也就是说每次mod 1000之后,数字的后三位是不变的,所以mod 1000,就可以防止数据过大超出范围.
如果还不清楚,我们还可以做一个实验:
比如595×78871=46928245,后三位是245
可如果只取78871的后三位871来算,595×871=518245,后三位也是245
由此可以证明我上面所说的是正确的了,你也可以自己再去做几个实验,结果都是如此
再问: ��ô�����Ŀ����ô���أ� �Dz��ǿ�������д�� ���� readln��a���� b:=a mod 1000; c:=b^a; d:=c mod 1000; writeln(d); readln;
再答: ��Ŀ�ܼ�,ֻҪ����n��n�η��Ļ��ϼ���mod 1000�Ϳ����ˣ��ο��������£� var n,i,m:longint; begin readln(n);m:=1; for i:=1 to n do m:=m*n mod 1000; writeln(m); end. �����ĿҪ������λ�����㣬���������
再问: �����ʣ������ش���m��=1����i��������1����ô�����for�����ʲô���أ� ����̣�http://zhidao.baidu.com/question/542882865?quesup2&oldq=1
再答: m=1,下面的for循环就是用来求n的次方的,m是一个累乘器 还有你给我看的那个问题,错就错在少了个begin和end以及一些编译错误,修改后如下: var a,b,c,d,i:integer begin readln(a); if a=1 then begin for i:=1000 to 9999 do begin b:=i div 100; c:=i mod 100; d:=b+c; if d*d=i then writeln(i); end; end; end. 编译错误就不说了,你这个begin end是必须要加的,因为这些处理语句本应在for循环里的
 
 
展开全文阅读
剩余:2000
上一页:解题方法 技巧
下一页:过程3