題目描述重要結論:ans=phi(n)*n/2;有人問現實中為什麼總是男生追求女生,反過來很少。實際上女生也是想主動追求男生的,但是世俗中對於主動追求男生的女生有種歧視,這樣就使得女生不大敢主動追求男生。但是面對喜歡的男生,難道就不出手麼?女生只能步步為營,挖坑來引誘男生往裡跳。這時候問題就來了,挖掘機技術到底哪家強?
被熱血沸騰的廣告**了若干天後,matt終於下定決心,毅然登上了開往泉城的列車,決心尋找生活的希望。
來到布魯謝特學院後,matt逐漸地了解了各種型號的挖掘機。在這裡我們可以認為有大挖掘機和小挖掘機兩種。
今天matt的任務很簡單:首先他要用大挖掘機挖出恰好n單位體積的砂土。由於小挖掘機比較笨拙,它每次挖的砂土體積是固定的。也就是說,設每次挖x單位體積砂土,那麼n需要被x整除。在挖出若干堆體積為x的砂土後,matt需要計算x的「難挖指數」。體積x的「難挖指數」定義如下:對於某個不超過x的體積y,如果x與y的最大公約數為1,那我們認為體積y是「難挖的」,x的「難挖指數」就要加上y。
由於matt之後還需要用小挖掘機處理被大挖掘機挖出的砂土,他希望知道所有可能的x的難挖指數的和,這樣他好估算今天要幹多久,不然作為布魯謝特的高才生,他出門要被笑話的。
輸入 第一行乙個整數t,表示資料組數。
接下來t行每行乙個整數表示n。
輸出 對於每個資料輸出一行乙個整數表示難挖指數的和。
樣例輸入
3 2
3 4
樣例輸出
2 4
6 提示
對於30%的資料有t<=20,n<=10^4。
對於60%的資料有t<=100,n<=10^7。 對於100%的資料 有1<=t<=1000,1<=n<=10^9。
phi()為尤拉函式
若a與n互質,則(n-a)也與n互質,而這樣總共有phi(n)/2對
時間複雜度o(sqrt(n))
var
cnt,s,a:array[0..33] of int64;
ans,t:qword;
q,n,i,m,tt:longint;
procedure
add(k:longint);
varsum,ol:int64;
i:longint;
begin
sum:=1;
for i:=1
to k do
sum:=sum*s[i];
if sum=1
then
begin ans:=ans+1; exit; end;
ol:=sum;
for i:=1
to k do
if s[i]<>1
then ol:=ol*(a[i]-1) div a[i];
ans:=ans+ol*sum div
2;end;
procedure
dfs(k:longint);
vari:longint;
begin
s[k]:=1;
if k>m then
begin
add(k-1); exit; end;
dfs(k+1);
for i:=1
to cnt[k] do
begin
s[k]:=s[k]*a[k];
dfs(k+1);
end;
s[k]:=1;
end;
begin
readln(tt);
for q:=1
to tt do
begin
readln(n);
ans:=0;
t:=n;
m:=0;
for i:=2
to trunc(sqrt(n)) do
begin
if t mod i=0
then
begin
m:=m+1;
a[m]:=i;
cnt[m]:=0;
while t mod i=0
dobegin
cnt[m]:=cnt[m]+1;
t:=t div i;
end;
if t=1
then
break;
end;
end;
if t<>1
then
begin m:=m+1; a[m]:=t; cnt[m]:=1; end;
if m=0
then
begin m:=1; a[m]:=n; cnt[m]:=1; end;
dfs(1);
writeln(ans);
end;
end.
挖掘機技術哪家強
為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入描述 輸入在第1行給出不超過105的正整數n,即參賽人數。隨後n行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 及其比賽成績 百分制 中間以空格分隔。輸出描述 在一行中給...
挖掘機技術哪家強
為了用事實說明挖掘機技術到底哪家強,pat 組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入在第 1 行給出不超過 1 的正整數 n,即參賽人數。隨後 n 行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 從 1 開始連續編號 及其比賽成績 百分制 中間以空格分...
挖掘機技術哪家強
為了用事實說明挖掘機技術到底哪家強,pat組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第1行給出不超過105的正整數n,即參賽人數。隨後n行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 從1開始連續編號 及其比賽成績 百分制 中間以空格分隔。輸...