2705: [SDOI2012]Longge的问题
Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 930 Solved: 601
[Submit][Status]
Description
Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题。现在问题来了:给定一个整数N,你需要求出∑gcd(i, N)(1<=i <=N)。
Input
一个整数,为N。
Output
一个整数,为所求的答案。
Sample Input
6
Sample Output
15
HINT
【数据范围】
对于60%的数据,0<N<=2^16。
对于100%的数据,0<N<=2^32。
题解:
代码:
1 var i:longint; 2 n,k,ans:int64; 3 procedure main; 4 begin 5 readln(n); 6 ans:=n; 7 for i:=2 to trunc(sqrt(n)) do 8 if n mod i=0 then 9 begin 10 k:=0; 11 while n mod i=0 do 12 begin 13 inc(k); 14 n:=n div i; 15 end; 16 inc(ans,ans*(i-1)*k div i); 17 end; 18 if n<>1 then inc(ans,ans*(n-1)*1 div n); 19 writeln(ans); 20 end; 21 begin 22 main; 23 end.