LOJ 6682 夢中的數論(min 25篩)

2021-10-02 06:01:22 字數 916 閱讀 7686

比較簡單的一道題

我們可以比較明顯的看出,我們要求的式子是乙個有實際意義的式子

如果把 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...