牛客 15898 黑貓的小老弟 法里數列

2021-09-24 05:18:36 字數 904 閱讀 8324

原來這個叫做法裡數列啊~

想一哈,比如n=5的時候

以5作為分母的有:45,

35,2

5,15

\frac,\frac,\frac,\frac

54​,53

​,52

​,51

​這4個數,為啥是4個喃?以為小於5以內與5互質的就是φ(5

)=

4\varphi(5)=4

φ(5)=4

個所以4為分母的就有φ(4

)=

2\varphi(4)=2

φ(4)=2

個最後還要加上以1為分母的1個

所以法里數列的公式就是尤拉函式字首和+1,即:

s (n

)+

1s(n)+1

s(n)+1

#include

"bits/stdc++.h"

using namespace std;

typedef

long

long ll;

const

int maxn=

1e4+5;

vector<

int>prime;

bool vis[maxn]

;ll phi[maxn]

,sphi[maxn]

;void

phi(

int n)

for(

int j=

0;jsize()

&&i*prime[j]

<=n;j++

)else

} sphi[i]

=sphi[i-1]

+phi[i];}

}int

main()

}

小K的疑惑 牛客

bob有 n 1 leq n leq10000 個點的樹,每條邊有乙個邊權 d 0 leq d leq 233 現在定義 dis i,j 代表第 i 個點到第 j 個點的距離模2。問有多少 i,j,k 滿足 dis i,j dis i,k dis j,k 首先,一棵樹中不存在 i,j,k 使得 di...

牛客 小y的盒子

稍加觀察就會發現,4n 1就是題目要的答案。至於為什麼,看官方的題解。不過這個n非常的大,用正常快速冪解決不了。這道題我學到的就是解決冪非常大的情況。sol1 之前好像做過一道類似的題目,想不出來,在群裡看到發了乙個名詞叫十進位制快速冪。然後根據這個名字自己意淫通了。一般的快速冪是把冪當成二進位製用...

牛客練習賽53 E 老瞎眼 pk 小鮮肉

problem 這題的題意大概是 給出一段長度為 n 的區間 q 次詢問求 l r 這個區間內 最短的一段區間 l r 使得 oplus a j 0 l l 誒 離線麼?樹狀陣列好像不好做啊 因為大多數人只會單點修改區間修改和差分吧 考慮離線 線段樹 我們先記錄乙個 sum i oplus i a ...