[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. 最开始想了好久没有想出问题的实质,最开始看题解的时候也是百思不得其解。我的数论确实要加强了…………
【代码】:
求出有多少个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.
相关文章推荐
- 数论 - SGU 107 987654321 problem
- 数论 - SGU 107 987654321 problem
- SGU 107 987654321 problem (数论)
- SGU 107 987654321 problem 翻译 题解
- sgu 107 (987654321 problem)
- SGU 107 987654321 problem
- SGU 107 987654321 problem【找规律】
- 987654321 problem - SGU 107(找规律)
- SGU107 - 987654321 problem
- SGU 107 987654321 problem【找规律】
- sgu 107 987654321 problem
- SGU:107 987654321 problem
- 找规律 SGU 107 987654321 problem
- SGU 107 987654321 problem
- sgu107:987654321 problem
- SGU - 107 - 987654321 problem (简单数学!)
- SGU107——987654321 problem
- SGU 107 987654321 problem(打表)
- SGU107. 987654321 problem 暴利找规律
- [SGU]107. 987654321 problem