// uva11916 emoogle grid
// rujia liu
#include#include#include#include#includeusing namespace std;
const int mod = 100000007;
const int maxb = 500 + 10;
int n, m, k, b, r, x[maxb], y[maxb];
set> bset;
int pow_mod(int a, long long p)
int mul_mod(int a, int b)
int inv(int a)
int log_mod(int a, int b)
for(i = 0; i < m; i++)
return -1;
}// 計算可變部分的方案數
int count()
c += n; // 第一行所有空格都有k種塗法
for(int i = 0; i < b; i++)
if(x[i] == 1) c--; // 扣除那些不能塗色的格仔
// ans = k^c * (k-1)^(mn - b - c)
return mul_mod(pow_mod(k, c), pow_mod(k-1, (long long)m*n - b - c));
}int doit()
int main()
printf("case %d: %d\n", t, doit());
}}
書上的**照舊:
題目大意:有一問題,在m行n列的網格上塗k種顏色,其中有b個格仔不用塗色,其它每個格仔塗一種顏色,同一列的上下兩個相鄰的格仔不能塗相同的顏色。給出m,n,k和b個格仔的位置,求出總方案數模掉1e8+7的結果r。現在已知r,求最小的m。
解題思路:有確定不用塗色格仔的區域作為不變部分,總數通過計算為tmp,外加可變部分的第一行,方案數為cnt,可變部分除第一行外,每加一行都將總數乘以 ( − 1 ) ,既有
c n ∗ p = r mod ( 1 e 8 + 7 )
p = c n − 1 ∗ r mod ( 1 e 8 + 7 )
就是大步小步演算法求m。
Poj2417 大步小步演算法
poj2417 given a prime p,2 p 231 an integer b,2 b p and an integer n,1 n p compute the discrete logarithm of n base b,modulo p that is,find an integer ...
運維創新一小步 企業騰飛一大步
為何要創新運維 目前國內企業都已經形成一定的資訊化規模,不過,隨著資訊化建設的深入,各企事業單位的it系統日趨複雜,品牌繁多 數量眾多的網路裝置 伺服器 中介軟體 業務系統等讓it管理員難以從容應對,即使加班加點的管理 也經常會因裝置出現故障而導致業務的中斷,嚴重影響運維的正常運轉。在企業裡,it部...
運維創新一小步 企業騰飛一大步
為何要創新運維 目前國內企業都已經形成一定的資訊化規模,不過,隨著資訊化建設的深入,各企事業單位的it系統日趨複雜,品牌繁多 數量眾多的網路裝置 伺服器 中介軟體 業務系統等讓it管理員難以從容應對,即使加班加點的管理 也經常會因裝置出現故障而導致業務的中斷,嚴重影響運維的正常運轉。在企業裡,it部...