這個題好神呀。。orz taorunz
有乙個結論,這個結論感覺很優美:
$$ans = \prod_^\varphi(i)$$
至於為什麼呢,大概是這樣子的:
對於每個數字 $x$,第 $x$ 行有 $x - \varphi(x)$ 個數字不為 $1$,則說明這一行要被消 $x - \varphi(x)$ 次(別忘了每一行都會被 $1$ 給消一次),每次消元都會令 $a[x][x]$ 減一,所以 $a[x][x]$ 最後會變成 $\varphi(x)$,所以答案就是這個啦。
時間空間複雜度均為 $o(n)$。
1 #include 2 typedef long3288_gromahlong
ll;3
#define n 1000000 + 5
4#define m 100000 + 5
5#define mod 100000000767
int n, ans = 1
, phi[n], q[m];89
intmain()
1019
for (int j = 1; j <= q[0] && i * q[j] <= n; j ++)
2026 phi[i * q[j]] = phi[i] *phi[q[j]];27}
28 ans = (ll) ans * phi[i] %mod;29}
30 printf("
%d\n
", ans);
31return0;
32 }
bzoj3289 Mato的檔案管理
給定乙個序列,每次詢問乙個區間,你可以交換相鄰兩個元素,這個區間你最少需要多少次交換才能使其有序。我們觀察,每次交換如果交換a i 和a i 1 那麼顯然a i a i 1 交換後逆序對個數減一。當序列逆序對個數為0時序列就有序。那麼顯然題意就是詢問區間逆序對個數。我們可以用莫隊演算法來做。因為它符...
bzoj 3289 Mato的檔案管理
description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...
bzoj3289 Mato的檔案管理
description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...