作业帮 > 综合 > 作业

求初级pascal题目答案:输入正整数n(整型),求n!除以2013的余数(n!=1*2*3*….*n)

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/27 22:51:52
求初级pascal题目答案:输入正整数n(整型),求n!除以2013的余数(n!=1*2*3*….*n)
1.输入正整数n(整型),求n!除以2013的余数(n!=1*2*3*….*n)
2.某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,超过100元的,超过部分按八折付款.编一程序完成超市的自动计费的工作
⒈首先要知道一个定理:
(a*b)mod n=((a mod n)*(b mod n))mod n.
这样就可以边乘变算,不论n多大都能不超时,否则还需要进行高精度运算
代码:
var n,i,m:longint;
begin
readln(n);
m:=1;
for i:=1 to n do
begin
m:=(m*(i mod 2013))mod 2013;//m的值即为i! mod 2013
if m=0 then break;//如果m已经是2013的倍数,那么可以直接退出循环,因为此时无论乘上哪一个数,m mod 2013仍然为0
end;
writeln(m);
end.
//--------------------------------------------------------------------------------------------------------------------
⒉代码:
var n,m:double;
begin
readln(n);
if n