HDU 5399 簡單數學

2021-07-04 16:39:16 字數 1133 閱讀 9072

本題目的意思是給出m個 (f1 , f2, ... fm) 置換,一些置換丟失,讓求有多少種組合,可以使得 f1( f2(... fm(i))) =i (1<=i<=n) 對多有的i都成立;

這樣問題可以轉換為若任意確定一些丟失的置換,而保留乙個丟失的置換fi,  有 x*fi*y=i;  fi =(x的逆)*(y的逆)所以,有唯一解,所以個數為記-1的個數為cnt

那麼結果(n!)^(cnt-1),本題目有特殊情況要注意.

#include#include#include#include#include#include#include#include#include#include #include#define pb push_back

#define rep1(i,j,k) for(int i=(j);i<=(int)k;i++)

#define per1(i,j,k) for(int i=(j);i>=(int)k;i--)

#define lowbit(x) ((x)&(-(x)))

#define fi first

#define se second

#define pii pair#define vi vectorusing namespace std;

typedef long long ll;

const int n = 110;

const int mod = 1e9+7;

int n,m,f[n][n],cnt;

void read()

rep1(j,2,n) scanf("%d",&f[i][j]);

}}void solve();

if(f[i][1]==-1) continue;

rep1(j,1,n) }

}if(cnt == 0)

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

return ;

}ll ji=1;

rep1(i,2,n) ji=ji*i%mod;

ll res=1;

rep1(i,1,cnt-1) res=res*ji%mod;

printf("%d\n",(int)res);

}int main()

return 0;

}

hdu 5399 數學推理

題目鏈結 題意 給你m個函式f1,f2,fm 即所有的x 對應的f x 已知其中一部分函式的函式值,問你有多少種不同的組合使得所有的i 1 i n 滿足f1 f2 fm i i 對於函式集f1,f2,fm and g1,g2,gm,當且僅當存在乙個i 1 i m j 1 j n fi j gi j ...

Acdream Xor 簡單數學

給定乙個集合a,乙個集合b,a,b元素個數相等,然後問是否存在乙個數x使得a中的元素均與這個數進行按位異或操作後的結果為b集合,如果存在輸出最小的數,不存在輸出 1。思路 由於給定的n為奇數,所以能夠根據二進位制位的最右邊位確定唯一的分組,然後只需要判定這個分組是否合理即可。分組是這樣劃分的,如有a...

簡單數學函式

簡單數學函式 1 題目描述 已知函式f x x2 2 2x根據輸入的x值計算f x 運算結果不超過int範圍,x 0 輸入輸入多組測試資料,每組一行為x值 輸出每個測試輸出資料一行 x int input 輸入x if x 0 y x 2 2 2 x print y 題目描述 已知函式,輸入a b的...