2019杭電多校訓練(四)

2022-05-01 01:36:15 字數 906 閱讀 1315

把乙個數轉化成質因數加指數連乘的形式,求最小指數

當時我們考慮先篩出$1e18^}$的所有素數,複雜度大概在$2e8$左右,剛好被卡了

其實篩到$1e18^}$的情況也不是很複雜(當時以為四個因數太複雜了,沒敢寫)

把小於$1e18^}$的質因子去掉,剩下的最多有四個質因子

如果m可以開四次根,那麼m一定是qqqq的形式

如果m可以開三次根,那麼m一定是qqq的形式

如果m可以開二次根,那麼m一定是qq或者qqpp形式

否則m一定存在一次冪

#include #define ll long long

using namespace std;

const int maxn = 1e6 + 5;

const ll mod = 1e9 + 7;

int vis[maxn],prim[maxn],top;

bool check(ll x,int y)//判斷x能否開y次冪

ll res=1;

for(int i=1;i<=y;i++)res*=st;

if(res==x)return 1;

else return 0;

}int main()

tree[maxn*25];

int root[maxn];

int cnt;

void updata(int x,int &rt,int a,int b)

int quer(int l,int r,int a,int b,int st,int en)//quer(root[l-1],root[r],r-l+1-mid,1,n)

int main()

ans=st;

printf("%d\n",st);}}

return 0;

}

2019杭電多校訓練(一)

刪除某些邊,讓 1 到 n 的最短路徑發生變化 刪除某條邊的費用是邊的長度 先用迪傑斯特拉跑一遍整個圖,滿足 dis a w dis b 的邊,肯定是最短路徑上的邊 選出這些邊,找到乙個最小割集,dinic比ek快很多,雖然漸進複雜度相同,都是 o nm 2 dinic加上弧優化後速度更快 incl...

2019杭電多校訓練第二場1002

題意 給出n個數,接下來有m次操作。1 k 在陣列後面多加乙個k。n n 1 0 l r 詢問 l,r 區間內任意取數,異或和的最大值。特別要注意的是2種操作都加密了,1號操作需要k k lasten 2號操作需要l l lasten n 1,r r lasten n 1.lasten初始值為0,以...

2019牛客多校訓練(四)

給出一顆樹 讓所有染色點到某個點的最大距離最小 結果為最遠點對的距離除二向上取整 假設有最遠點對的路徑上的中間點 如果有某個點它到這個中間點要遠,那麼最遠點對就不是最遠點對了,產生矛盾 利用樹上點對路徑唯一性,兩次 dfs 求出染色點直徑 include define ll long long de...