亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Codeforces Round #341 (Div. 2)E(矩陣快速冪優化dp,好題)

2019-11-14 10:09:50
字體:
來源:轉載
供稿:網友

題目鏈接E. Wet Shark and Blockstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard output

There are b blocks of digits. Each one consisting of the same n digits, which are given to you in the input. Wet Shark must choose exactly one digit from each block and concatenate all of those digits together to form one large integer. For example, if he chooses digit 1 from the first block and digit 2 from the second block, he gets the integer 12. 

Wet Shark then takes this number modulo x. Please, tell him how many ways he can choose one digit from each block so that he gets exactly k as the final result. As this number may be too large, PRint it modulo 109?+?7.

Note, that the number of ways to choose some digit in the block is equal to the number of it's occurrences. For example, there are 3 ways to choose digit 5 from block 3 5 6 7 8 9 5 1 1 1 1 5.

Input

The first line of the input contains four space-separated integers, nbk and x (2?≤?n?≤?50?000,?1?≤?b?≤?109,?0?≤?k?<?x?≤?100,?x?≥?2) — the number of digits in one block, the number of blocks, interesting remainder modulo x and modulo x itself.

The next line contains n space separated integers ai (1?≤?ai?≤?9), that give the digits contained in each block.

Output

Print the number of ways to pick exactly one digit from each blocks, such that the resulting integer equals k modulo x.

Examplesinput
12 1 5 103 5 6 7 8 9 5 1 1 1 1 5output
3input
3 2 1 26 2 2output
0input
3 2 1 23 1 2output
6Note

In the second sample possible integers are 22, 26, 62 and 66. None of them gives the remainder 1 modulo 2.

In the third sample integers 11, 13, 21, 23, 31 and 33 have remainder 1 modulo 2. There is exactly one way to obtain each of these integers, so the total answer is 6.

題意:

給你n個數,這n個數的大小都在1~9之間,有b塊集合,每個集合內都有這n個數,你要從每個集合中取出一個數,并把它們依次拼接起來合并成一個大的整數,問最后這個整數%x得到k的方案數有多少。

題解:

我們可以先把1~9在n出現的次數用occ[i]存下來 ,然后用dp[i][j]表示取前i個數,最終模x后為j的方案數,那么容易得到dp[0][0]=1,dp[i][j]=sum{dp[i-1][a]*occ[d] }(其中(a*10+d)%x==j),但因為b太大,所以我們考慮用矩陣快速冪優化.

由于對于指定的膜數x,我們可以遍歷每個余數i和j,再遍歷k(k為1-9的數),如果(i*10+k)%x==j,那么矩陣data[i][j]+=occ[k].

然后對構造的這個矩陣進行快速冪運算即可。

#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<stack>using namespace std;#define rep(i,a,n) for (int i=a;i<n;i++)#define per(i,a,n) for (int i=n-1;i>=a;i--)#define pb push_back#define fi first#define se secondtypedef vector<int> VI;typedef long long ll;typedef pair<int,int> PII;const int inf=0x3fffffff;const ll mod=1000000007;const int maxn=100+10;struct matrix{    int n;    ll data[maxn][maxn];    matrix(int tn=0){        n=tn;        rep(i,0,n) rep(j,0,n) data[i][j]=0;    }    void init(){        rep(i,0,n) data[i][i]=1;    }};matrix Operator *(matrix a,matrix b){    matrix c(a.n);    int n=a.n;    rep(i,0,n) rep(j,0,n) rep(k,0,n) c.data[i][j]=(c.data[i][j]+a.data[i][k]*b.data[k][j]%mod)%mod;    return c;}matrix func(matrix a,int b){    matrix t(a.n),ans(a.n);    ans.init();    t=a;    while(b)    {        if(b&1) ans=ans*t;        t=t*t;        b>>=1;    }    return ans;}int a[15];int main(){    int n,b,kk,x;    scanf("%d%d%d%d",&n,&b,&kk,&x);    rep(i,1,n+1)    {        int p;        scanf("%d",&p);        a[p]++;    }    matrix tmp(x);    rep(i,0,x)        rep(j,0,x)            rep(k,1,10)            if((i*10+k)%x==j) tmp.data[i][j]+=a[k]; //    matrix ans(x);    ans=func(tmp,b);    cout << ans.data[0][kk] << endl;    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久999国产精品| 亚洲激情中文字幕| 亚洲第一精品自拍| 久久久免费在线观看| 精品国内自产拍在线观看| 日本亚洲精品在线观看| 国产一区二区三区中文| 欧美日韩精品在线观看| 在线看欧美日韩| 久久精品成人动漫| 亚洲天堂视频在线观看| 亚洲人成电影网站色www| 国产精品精品一区二区三区午夜版| 欧美日韩xxx| 亚洲国产另类久久精品| 欧美日韩中文字幕在线| 成人免费观看49www在线观看| 日韩一区二区久久久| 亚洲欧美日韩成人| 欧美高清第一页| 精品人伦一区二区三区蜜桃免费| 亚洲综合中文字幕在线观看| 热99精品里视频精品| 国产精品久久久久久久天堂| 欧美精品在线免费播放| 欧美日韩福利电影| 亚洲a在线播放| 成人www视频在线观看| 中文字幕最新精品| 国产精品日韩欧美大师| 成人免费视频97| 98视频在线噜噜噜国产| 亚洲精品免费在线视频| 日韩中文字幕在线播放| 国产精品大片wwwwww| 成人精品在线视频| 成人性生交大片免费观看嘿嘿视频| 亚洲精品白浆高清久久久久久| 久久久久在线观看| 日韩成人网免费视频| 国产精品一区久久久| 国产日韩欧美在线看| 欧美成人精品在线观看| 国内精品400部情侣激情| 精品国产美女在线| 日韩av手机在线观看| 国产精品美腿一区在线看| 精品视频在线导航| 欧美电影在线播放| 日韩网站免费观看| 懂色av中文一区二区三区天美| 毛片精品免费在线观看| 亚洲欧美日韩国产精品| 国内精品美女av在线播放| 日韩av不卡在线| 国产在线精品成人一区二区三区| 欧美日韩在线一区| 国产亚洲精品久久久久久| 亚洲人成欧美中文字幕| 欧美午夜视频在线观看| 疯狂做受xxxx高潮欧美日本| 久久久久久久久91| 国产91网红主播在线观看| 亚洲一区二区在线播放| 欧美成人免费视频| 亚洲免费影视第一页| 亚洲精品一区二三区不卡| 国产精品r级在线| 亚洲国产精品成人va在线观看| 91sa在线看| 久久久久久久久爱| 亚洲男人天堂视频| 国产精品视频网址| 久久久久久久久网站| 538国产精品一区二区在线| 国产精品国产自产拍高清av水多| 2025国产精品视频| 国产999精品久久久影片官网| 欧美高清无遮挡| 一级做a爰片久久毛片美女图片| 久久久久久噜噜噜久久久精品| 精品国产福利视频| 国产欧美精品xxxx另类| 91日韩在线视频| 欧美丰满片xxx777| 亚洲人午夜精品免费| 大桥未久av一区二区三区| 另类专区欧美制服同性| 亚洲天堂久久av| 久久偷看各类女兵18女厕嘘嘘| 国产成人在线精品| 欧美日韩免费在线| 国产日本欧美在线观看| 国产精品日韩欧美大师| 亚洲永久在线观看| 亚洲性无码av在线| 亚洲国产精品电影在线观看| 久久99久国产精品黄毛片入口| 91沈先生作品| 亚洲欧美在线一区二区| 久久久久久12| 91精品视频专区| 91香蕉嫩草影院入口| 国内精品久久久久久久| 国产精品日韩欧美大师| 欧美国产日韩视频| 欧美亚洲国产视频小说| 国产精品女视频| 精品国产鲁一鲁一区二区张丽| 国产精品激情av在线播放| 成人免费自拍视频| 亚洲国产精品视频在线观看| 久久精品国产69国产精品亚洲| 日本精品视频在线播放| 色综久久综合桃花网| 国产欧美久久一区二区| 一区三区二区视频| 日韩精品高清视频| 国产精品精品国产| 亚洲一区精品电影| 久久久久久久电影一区| 国产成人一区二区在线| 欧美在线激情网| 国产精品男人的天堂| 亚洲欧美另类自拍| 国产精品一区二区久久国产| 久久免费视频网| 成人激情在线播放| 91久久久国产精品| 亚洲韩国欧洲国产日产av| 亚洲精品日韩久久久| 中文字幕精品久久久久| 国产99视频在线观看| 美女福利视频一区| 亚洲免费视频在线观看| 亚洲女成人图区| 57pao国产成人免费| 青青在线视频一区二区三区| 日本三级久久久| 国产mv免费观看入口亚洲| 日av在线播放中文不卡| 97视频在线观看免费高清完整版在线观看| 青青a在线精品免费观看| 国产精品美女在线观看| 国产免费久久av| 中文字幕日韩在线观看| 久久国产天堂福利天堂| 精品国产乱码久久久久久天美| 91久久久久久久久久久| 国产91ⅴ在线精品免费观看| 国产亚洲欧洲在线| 欧美激情视频一区| 免费91麻豆精品国产自产在线观看| 美女福利精品视频| 欧美高清videos高潮hd| 亚洲色图色老头| 亚洲人成毛片在线播放| 国产精品最新在线观看| 日韩中文在线视频| 欧美国产激情18| 青青在线视频一区二区三区| 久久综合九色九九| 亚洲专区国产精品| 亚洲视频一区二区|