根據擴歐$(a,b)=1$必須要滿足,同時,若$a+b$為偶數則格仔的」奇偶性「不變,因此$a+b$必須為奇數
反過來,容易證明滿足$(a,b)=1$且$a+b$為奇數則一定可行(構造從$(0,0)$到$(0,1)$的一組解即可)
不妨假設$a$為奇數、$b$為偶數(答案再乘以2),分兩類考慮:
1.$a2.$a>b$,由於$(a,b)=1$等價於$(a,a-b)=1$,因此每乙個小於$a$且與$a$互素的奇數與另乙個偶數對應,因此即$\sum_\frac$
不妨先把答案的2乘進去,那麼即$f_=\sum_^\varphi(i)+\sum_\varphi(2i)$(偶數要算兩次)
根據積性或$\varphi$的計算過程,若$i$為奇數,則有$\varphi(2i)=\varphi(i)$,若$i$為偶數,則$\varphi(2i)=2\varphi(i)$
對於$\sum_\varphi(2i)$,對$i$的奇偶性分類討論,即$\sum_\varphi(2i)=\sum_\varphi(2i)+\sum_\varphi(2i+1)=f_}$
根據$f_=\sum_^\varphi(i)+f_}$,再用杜教篩優化,時間複雜度可以做到$o(tn^}\log_n)$,可以通過
1 #include2view codeusing
namespace
std;
3#define n 40000005
4#define ull unsigned long long
5int
t,vis[n],p[n];
6ull n,ans,phi[n];
7 mapmat;
8ull calc(ull n)
18return mat[n]=ans;19}
20int
main()
27for(int j=1;(j<=p[0])&&(i*p[j]4);j++) 34}
35}36for(int i=2;i4;i++)phi[i]=phi[i]+phi[i-1
];37 scanf("
%d",&t);
38while (t--)
45 printf("
%llu\n
",ans);46}
47 }
luogu2051中國象棋
題目描述 這次小可可想解決的難題和中國象棋有關,在乙個n行m列的棋盤上,讓你放若干個炮 可以是0個 使得沒有乙個炮可以攻擊到另乙個炮,請問有多少種放置方法。大家肯定很清楚,在中國象棋中炮的行走方式是 乙個炮攻擊到另乙個炮,當且僅當它們在同一行或同一列中,且它們之間恰好 有乙個棋子。你也來和小可可一起...
Luogu 動態等級與使用者名稱顏色
動態等級是根據使用者在一段時間內的刷題 社群活躍 打卡 題解 違規情況,按照一定演算法得出的結果,該演算法不公開。動態等級比較準確的表現了使用者一段時間內在洛谷的綜合行為。動態等級由 1 到 4,使用者名稱的顏色為分別對應為棕色 灰色 藍色 綠色 橙色 紅色。管理員的使用者名稱顏色為紫色,不受動態等...
樹狀陣列求逆序對與luogu1908
今天上午,我完成了樹狀陣列求逆序對 1 的學習,並完成了luogu1908的程式設計與除錯,以下是一些記錄與感想 樹狀陣列求逆序對的中心思想是 1 樹狀陣列c a i 記錄a i 出現的次數,然後利用樹狀陣列求小於a i 的數的個數s i 2 2 用i s i 表示輸入到當前時,大於a i 的數的個...