題目鏈結
根據算術基本定理,猜想:f(a*b)=f(a)*f(b) ,a,b 互質
不妨假設
if n 為質數 ,那麼f(n)=2
else if 存在 x>=3,那麼f(n)=0, 因為n分成兩份,有三個相同pi,必有兩個pi分到同一組
else if 存在 x<=2 && x !=1,那麼f(n)=f(n/ a*a), 這兩個相同的pi 必須分到兩個組,那麼同時捨去這兩個對結果並無影響
else if x=1, f(n)=2*f( n / a)
,因為當x=1 時,f(n/a) 的所有情況都可以加入a,且對於每一種情況,a都可以加入到左邊或右邊,
所以有2*f(n/a)種情況
所以只需找到n的最小素因子a,然後看a有幾次冪就可以
線性篩就可以
#include#includeusing namespace std;
const int maxn=2e7+4;
int pri[maxn];
int u[maxn];
long long f[maxn]=;
void is_prime()
else if(i%pri[j]==0)
else
f[num]=2*f[i];
} }}int main()
int a;
for(int i=1;i<=n;i++)
return 0;
}
ACM ICPC 2018 南京賽區網路預賽
e.ac challenge 題意 你有n個題要去做,你其實都會做但是要求是先做完某些題你才能做這道,每道題做後得分是第n次做題 a i b i 問你最後最大能得多少分 思路 第一開始去向網路流,但仔細想想他和時間還有關係,由於資料量只有20,果斷去想dp,我們用二進位制去存某些題做過沒有,dp i...
ACM ICPC 2018 南京賽區網路預賽
a 直接輸出n 1.include using namespace std typedef long long ll const ll maxn 1e5 5 ll n int main return 0 c 模擬,不過要重新定義數的大小關係,或者是吧1,2變成14,15,我就是選擇的後者,最後計算的...
ACM ICPC 2018 焦作賽區網路預賽
有t tt組樣例,接下來給出n nn艘船和m mm次詢問。接下來n行,每行給出 v i v i v i 和 c i c i c i 分別代表船的載重 和 船的數量有2c i 1 2 1 2c i 1只。然後給出m次詢問,問恰好裝q重量的貨物的 方案數 有多少 每艘船都要裝滿 多重揹包來解決,同時船的...