uva 11916 大步小步演算法

2021-07-10 01:58:29 字數 1142 閱讀 9335

// 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部...