您的位置:首页 > 其它

[SGU 107]987654321 problem (数论)

2009-10-05 22:23 405 查看
【题目大意】:

求出有多少个N位数的平方的最后9位为987654321。

【题目分析】:

N<=2^31-1,所以枚举肯定是不行,要找规律。

我们发现这样一个事实,能影响平方后9位的只有原数的后9位。

原因在于做乘法的时候,最后的9位是由得数累加的最后9层的和决定的。

所以我们只要找到N<=9的情况就可以了。

经过写一个小小的枚举程序,我们发现n<=8时无解。n=9时,有8个解。

而当n>9时,解的个数根据乘法原理应该是8*9*10^(n-10)即72*10^(n-10)。

所以代码也就会很短了。

P.s. 最开始想了好久没有想出问题的实质,最开始看题解的时候也是百思不得其解。我的数论确实要加强了…………

【代码】:

program SGU_107;
var
n,i:longint;
begin
assign(input,'a.in');
assign(output,'a.out');
reset(input); rewrite(output);
readln(n);
if n<9 then writeln(0)
else if n=9 then writeln(8)
else
begin
write(72);
for i:=1 to n-10 do
write(0);
writeln;
end;
close(input); close(output);
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: