hdu 5392 許多數的lcm的取模

2021-07-04 15:08:21 字數 773 閱讀 6399

算出每個迴圈塊的長度,直接相乘肯定是不行的,需要分解質因數,每個因子取每次分解出來數量的最大值,然後用下快速冪優化下乘法就好了,比賽時腦子短路了,一直wa

#include#include#includeusing namespace std;

const int n=3e6+10;

const long long mod=3221225473;

int n;

int a[n];

bool vis[n];

int b[n],ma;

long long res=1;

void rd(int&x)

long long solve(long long x,long long y)

return res;

}int main()

memset(vis,0,sizeof vis);

memset(b,0,sizeof b);

bool find=false;

for(int i=1;i<=n;i++)

int tmp=cnt;

for(int i=2;i*i<=tmp;i++)b[i]=max(b[i],num);}

if(cnt==1) break;

}if(cnt>1) b[cnt]=max(b[cnt],1);

} res=1;

if(!find)

for(int i=2;i<=ma;i++) if(b[i])res=(res*solve(i,b[i]))%mod;

cout<

uva 539 簡單回溯)

題目大意 輸入兩個數n,m 表示有0到n 1個節點,m條邊 問?從某乙個節點從出發最多能走多少條邊 每條邊只能走一次 題目分析 列舉所有節點,回溯計算從該節點出發最多能經過幾條邊 for i 0 to n 1 列舉所有節點 dfs i,0 回溯計算從該節點出發所能經過的最大邊數 那麼dfs函式中的內...

loj539 旅遊路線

考慮列舉加油的位置,當確定某次在第 i 個位置加油後,且下一次到 j 加油,那麼 i 到 j 必然會選擇不超過 c 條邊且最長的路徑,記作 d 如果能求出 d 再設 f 表示 q 元 恰好用完 從 i 出發的最長路,列舉 i 之後那一次加油點即可轉移,由於 q le n 因此這裡的複雜度為 o n ...

539 最小時間差

給定乙個 24 小時制 小時 分鐘 hh mm 的時間列表,找出列表中任意兩個時間的最小時間差並以分鐘數表示。鴿巢原理優化 資料規模大於24 60 1440時,直接返回0 import j a.util.collections import j a.util.list class solution ...