矩陣快速冪求出每個點走n步後到某個點的方案數。然後暴力列舉即可
#include#include#include#includeusing namespace std;1122 機械人走方格 v4#define rep(i,s,t) for(int i=s;i<=t;i++)
#define dwn(i,s,t) for(int i=s;i>=t;i--)
#define clr(x,c) memset(x,c,sizeof(x))
#define ll long long
int read()
const int nmax=5;
const int mod=1e9+7;
struct node
node operator*(const node&o)const
return ans;
}};node a,b;
int main()
ll ans=0;
rep(i,1,4) rep(j,1,4) if(i!=j) rep(k,1,4) if(k!=j&&k!=i) rep(t,1,4) if(t!=i&&t!=j&&t!=k)
ans=(ans+a.a[1][i]*a.a[2][j]%mod*a.a[3][k]%mod*a.a[4][t]%mod)%mod;
printf("%lld\n",ans);
return 0;
}
基準時間限制:1 秒 空間限制:131072 kb 分值: 160 難度:6級演算法題
收藏關注四個機械人a b c d,在2 * 2的方格裡,一開始四個機械人分別站在4個格仔上,每一步機械人可以往臨近的乙個格仔移動或留在原地(同乙個格仔可以有多個機械人停留),經過n步後有多少種不同的走法,使得每個毯子上都有1機械人停留。由於方法數量巨大,輸出 mod 10^9 + 7的結果。
input
輸入1個數n(0 <= n <= 10^9)output
輸出走法的數量 mod 10^9 + 7input示例
1output示例
9
51Nod1122 機械人走方格 V4
四個機械人a b c d,在2 2的方格裡,一開始四個機械人分別站在4個格仔上,每一步機械人可以往臨近的乙個格仔移動或留在原地 同乙個格仔可以有多個機械人停留 經過n步後有多少種不同的走法,使得每個毯子上都有1機械人停留。由於方法數量巨大,輸出 mod 10 9 7的結果。input 輸入1個數n ...
51nod 1118 機械人走方格
m n的方格,乙個機械人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10 9 7的結果。第1行,2個數m,n,中間用空格隔開。2 m,n 1000 輸出走法的數量。2 3第一次看到覺得用搜尋寫,沒寫出來,但是還是覺得搜素可以實現的 下面用的是dp,等...
51nod 1118 機械人走方格
基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 m n的方格,乙個機械人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10 9 7的結果。input 第1行,2個數m,n,中間用空格隔開。2 m,n 1000 output ...