比較簡單的一道題
我們可以比較明顯的看出,我們要求的式子是乙個有實際意義的式子
如果把 i 分解質因數,把j+k換成k'(k'>j)
那麼題目就是在求i的約數的無序對數,即
然後問題就轉化為了求
直接上兩個min_25篩
結果考試的時候把min_25寫錯了(各種錯:預處理、遞迴s(a/pw,i+1)……),一直沒調出來
思想不嚴謹,老是要犯低階錯誤(而且心態不好,最後比較慌。。。然後沒調出來)
**:
#include#include#include#includeusing namespace std;
#define n 1000000
#define ll long long
const int mod=998244353;
const int inv2=499122177;
int tot,s[n+5];
bool vis[n+5];
int id1[n+5],id2[n+5];
ll prime[n+5],n,a[n+5];int m,blk;
inline int id(ll x)
void min25()
} for(i=1;i<=n;i=j+1)
for(j=1;j<=tot;j++)
for(i=1;i<=m&&1ll*prime[j]*prime[j]<=a[i];i++)
s[i]=((1ll*s[i]-(s[id(a[i]/prime[j])]-(j-1)))%mod+1ll*mod)%mod;
}int solve0(ll a,int b)
{ if(n<=1||a還有,思想不要僵化,不用把兩個函式分別預處理,它們的 f 都是常函式,所以只需要篩乙個質數個數就可以了。。。
LOJ6682 夢中的數論(min 25篩)
首先題目裡面的式子乍一看很扯,實際上我們發現對於i ii,它的每一對約數都出現了一次並且被計算,則實際上我們要求的是 ans i 1n d i 2 12 i 1nd2 i i 1 nd i ans sum n frac sum nd 2 i sum nd i ans i 1 n 2d i 21 i ...
loj6053 簡單的函式 min25篩
對於100 的資料,n 1e10 首先,考慮質數,即c 1的情形,f 2 3,其餘f p p 1,這裡就先統一f p p 1處理,然後對第乙個質數特判加2 由於f p p 1,所以這裡拆成兩部分,g用來算前面一項,質數p的字首和,h用來算後面一項,質數的個數即1的字首和 兩個陣列求法是一樣的,然後第...
Loj 6053 簡單的函式 Min25篩
定義乙個積性函式 f p c p xor c 求 sum nf i 異或這個東西不太好搞,要考慮怎麼求出 g 陣列。當 p 為質數時 f p p 1 所以我們讓 g n sum n i in pri i 1 就好了。然後因為 i 1 不是完全積性函式,所以拆成 i 和 1 分開來就好了。然後因為 f...