很久很久以前,有乙隻神犇叫yzy;
很久很久之後,有乙隻蒟蒻叫lty;
請你讀入乙個整數n;1<=n<=1e9,a、b模1e9+7;
請你輸出乙個整數a=\sum_^n;
請你輸出乙個整數b=\sum_^n;
11首先發現第乙個一定是1.。。。
然後發現第二個其實可以表示成
\[\sum_^n\phi(i)*i
\]然後我們令
\[f(i)=\phi(i)*i
\\g(i)=i
\]那麼可以得到
\[ans=sum(n)=\sum_^nf(i)
\]又因為
\[\sum_^n\sum_f(d)g(\frac)=\sum_^n i^2=\frac\]且
\[\sum_^n\sum_f(d)g(\frac)=\sum_^ng(k)\sum_^\rfloor}f(d)=\sum_^ng(k)sum(\lfloor\frac\rfloor)
\]所以有
\[sum(n)=\frac-\sum_^ng(k)sum(\lfloor\frac\rfloor)
\]然後上杜教篩板子。。
#includeusing namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
const ll n = 1e7 + 10;
const ll inv6 = 166666668;
const ll inv2 = 500000004;
ll prime[n], cnt = 0;
ll phi[n], sum[n], vis[n];
mapmp;
ll add(ll a, ll b)
ll sub(ll a, ll b)
ll mul(ll a, ll b)
void get_prime()
for (ll j = 1; j <= cnt && i * prime[j] < n; j++) else
}} for (ll i = 1; i < n; i++)
sum[i] = add(sum[i - 1], mul(i, phi[i]));
}ll solve(ll n)
return mp[n] = res;
}int main()
bzoj 4916 神犇和蒟蒻 杜教篩
求a ni 1 i 2 和b ni 1 i2 n 1e9,答案模1e9 7 md第一問是什麼鬼?第二問想到是杜教篩 因為不會洲閣篩 但是沒想到用哪個函式和f卷起來。其實考慮到f d d d 要把常數消掉的話,最好就是把f和g d d 卷起來,然後就可以得到 i 1n j if j g ij i 1n...
bzoj4916神犇和蒟蒻 杜教篩
題意 求sigma mu i 2 和sigma phi i 2 這題以前剛學杜教篩的時候就想過沒想到真的有人考出來了 mu的那個明顯怎麼都是1.phi的那個拆開就是phi i i 線性求的時候順便搞一下然後就和求sigma phi i 沒什麼區別了。include include include d...
bzoj4916 神犇和蒟蒻 杜教篩
題面 傳送門一句話,就是讓你求 mu left i 2 right 以及 varphi left i 2 right 的字首和 思路 第一問,瞪了一會兒恍然大悟 這不就是1嗎.因為對於 mu left i 2 right i 2 i ast i 那麼 mu left i 2 right 在 i ne...