挖掘機技術哪家強

2021-07-24 14:35:48 字數 2394 閱讀 9244

題目描述

有人問現實中為什麼總是男生追求女生,反過來很少。實際上女生也是想主動追求男生的,但是世俗中對於主動追求男生的女生有種歧視,這樣就使得女生不大敢主動追求男生。但是面對喜歡的男生,難道就不出手麼?女生只能步步為營,挖坑來引誘男生往裡跳。這時候問題就來了,挖掘機技術到底哪家強?

被熱血沸騰的廣告**了若干天後,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。

重要結論:ans=phi(n)*n/2;

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開始連續編號 及其比賽成績 百分制 中間以空格分隔。輸...