化簡一下式子,就是$\sum_^ncalc(d)d^2\varphi(d)$
其中$calc(d)=\frac\frac+1)^2\frac}^2}$
可以對calc(d)做整除分塊,那麼要求$d^2\varphi(d)$的字首和
看一眼資料範圍,大概要杜教篩
湊了一會,發現令$f(d)=d^2\varphi(d)$,$g(d)=d^2$,$h=f*g$,那麼$h(n)=n^2\sum_\varphi(d)=n^3$
(也就是說$id^3=id^2\varphi*id^2$,好神奇啊)
那麼就好辦了,$n^3$的字首和是有公式的($1^3+2^3+..+n^3=(1+2+..+n)^2$)
杜教篩那個式子套一下就行了。。也可以預處理一點字首和
複雜度?...不會算
以下是瞎扯:設預處理1-k
算一次x,複雜度是$f(x)=\sum_^\sqrt}=o(\frac})$
後半部分複雜度是$\sum_^f(\frac)=nk^}\sum_^\frac=nk^}log(n/k)$
總複雜度是$nk^}log(n/k)+k$
當$k=n^}$時,複雜度是$n^}log$
1 #include2 #include3 #include4 #include5 #include6using
namespace
std;
7#define fi first
8#define se second
9#define mp make_pair
10#define pb push_back
11 typedef long
long
ll;12 typedef unsigned long
long
ull;
13 typedef pairpii;
14ll md;
15ll h(ll n)
1620
ll g(ll n)
2124 ll mod(ll n,ll d=md)
2530
const ll k=5000000
;31 ll hh[k+100],prime[k+100
],len;
32bool nprime[k+100
];33 mapma;
34ll calc(ll n)
3544
return ma[n]=ans;45}
46ll n;
47ll x(ll d)
4852
ll ans;
53int
main()
5462
for(j=1;j<=len&&i*prime[j]<=k;j++)
6370
else
71 hh[i*prime[j]]=hh[i]*(prime[j]-1
);72}73
}74for(i=1;i<=k;i++) hh[i]=hh[i]*i%md*i%md;
75for(i=1;i<=k;i++) hh[i]=(hh[i-1]+hh[i])%md;
76//
while(1)
77//
81for(i=1;i<=n;i=j+1)82
86 printf("
%lld
",ans);
87return0;
88 }
洛谷 3768 簡單的數學題
根據crash的數字 很容易可以將式子化簡為 begin ans sum limits n sum limits ij i,j sum limits n d 3 sum limits right rfloor mu k k 2 left sum limits right rfloor i right...
洛谷3768 簡單的數學題 題解
題面來自洛谷,因為沒用markdown所以直接截的圖。剩餘的圖是我用markdown寫完然後截的圖。參考洛谷第一篇題解。這個式子直觀感受就需要莫比烏斯反演,大致的過程參考 bzoj2693 jzptab 那麼跳過暴力推式子,我們能夠得到 如果你疑問為什麼是miu k d 而不是miu d 其實二者皆...
小學數學題 洛谷p2921
露公尺婭 我來先考你一道小學數學題吧!琪露諾 好!小學的題我肯定都會!露公尺婭 有 n n n 只妖精要跨過霧之湖,由於湖邊大霧瀰漫,妖精們看不清湖到底有多大,不想從邊上繞過去。湖上有一條船個傳送器,且這個傳送器每次只能載 r r r 只妖精跨過湖面 注意傳送器可以同時把兩側的妖精分別運到對岸,但每...