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

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

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

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

題目鏈接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
欧美大片在线免费观看| 欧美激情女人20p| 欧美日韩国产中文字幕| 北条麻妃一区二区三区中文字幕| 日韩视频免费看| 国产精品自产拍高潮在线观看| 欧美亚洲另类在线| 欧美大片第1页| 一区二区三区在线播放欧美| 国产99久久精品一区二区 夜夜躁日日躁| 精品爽片免费看久久| 久久综合国产精品台湾中文娱乐网| 亚洲日本欧美日韩高观看| 国产精品老女人精品视频| 欧美激情一区二区三区高清视频| 欧美激情视频在线| 永久免费看mv网站入口亚洲| 国产精品专区h在线观看| 91久久精品国产| 亚洲日本欧美日韩高观看| 欧美最顶级丰满的aⅴ艳星| 清纯唯美日韩制服另类| 亚洲国产精品字幕| 精品中文字幕视频| 日韩在线中文字幕| 亚洲自拍小视频| 欧美韩日一区二区| 亚洲男人天堂古典| 国产精品久久久久免费a∨大胸| 久久成人精品一区二区三区| 另类美女黄大片| 成人羞羞国产免费| 亚洲成人亚洲激情| 色婷婷久久一区二区| 欧美精品一区三区| 亚洲精品xxx| 国产成人精品综合久久久| 91精品视频一区| 91亚洲精品一区| 亚洲国产91精品在线观看| 欧美另类交人妖| 日本午夜精品理论片a级appf发布| 亚洲精品成人久久电影| 亚洲综合在线做性| 2019最新中文字幕| 国产精品第一第二| 免费97视频在线精品国自产拍| 久久夜色精品国产欧美乱| 国产精品18久久久久久首页狼| 91热福利电影| 亚洲欧美在线播放| 九九热精品视频在线播放| 欧美日韩中国免费专区在线看| 2024亚洲男人天堂| 91视频国产精品| 成人xvideos免费视频| 亚洲毛片在线观看.| 欧美视频第一页| 亚洲老头老太hd| 久久免费视频网站| 欧美又大粗又爽又黄大片视频| 亚洲aa在线观看| 日韩av电影手机在线观看| 日韩精品在线免费观看视频| 欧美在线一区二区视频| 色狠狠久久aa北条麻妃| 日韩一级裸体免费视频| 午夜精品久久久久久久男人的天堂| 国产精品白丝av嫩草影院| 精品视频在线播放免| 久久精彩免费视频| 日本精品一区二区三区在线| 日本最新高清不卡中文字幕| 亚洲第一国产精品| 亚洲欧洲成视频免费观看| 久久精品国产欧美激情| 国产在线观看91精品一区| 色伦专区97中文字幕| 国产suv精品一区二区三区88区| 欧美精品一区三区| 日韩激情视频在线播放| 亚洲影院在线看| 国语自产精品视频在线看| 久久97久久97精品免视看| 亚洲国产精品久久久久久| 一色桃子一区二区| 精品香蕉在线观看视频一| 色婷婷亚洲mv天堂mv在影片| 国产女同一区二区| 91国产美女视频| 亚洲第一页中文字幕| 日韩不卡中文字幕| 国产日韩欧美在线视频观看| 亚洲人成电影在线播放| 97视频在线观看视频免费视频| 91亚洲国产成人久久精品网站| 91理论片午午论夜理片久久| 亚洲伊人成综合成人网| 久久精品91久久久久久再现| 高潮白浆女日韩av免费看| 国产亚洲人成a一在线v站| 日韩精品中文字幕视频在线| 蜜臀久久99精品久久久久久宅男| 欧美第一黄网免费网站| 丝袜美腿精品国产二区| 久久久国产精品x99av| 精品性高朝久久久久久久| 国产99视频精品免视看7| 538国产精品视频一区二区| 精品中文字幕视频| 国产日韩欧美在线视频观看| 97色伦亚洲国产| 国产91久久婷婷一区二区| 国产一区香蕉久久| 亚洲男人天堂网站| 欧美亚洲成人免费| 亚洲最大激情中文字幕| 国产成人精品日本亚洲| 欧美成人一二三| 国产成人精品亚洲精品| 欧美视频一区二区三区…| 91精品国产91久久久久久久久| 亚洲最新av在线网站| 欧美午夜丰满在线18影院| 亚洲小视频在线| 色视频www在线播放国产成人| 欧美精品久久一区二区| 亚洲欧洲在线免费| 久久香蕉国产线看观看av| 国产午夜精品麻豆| 欧美激情2020午夜免费观看| 2021国产精品视频| 亚洲欧美在线免费| 亚洲性av网站| 国产精品久久99久久| 亚洲性av在线| 久久不射电影网| 国产一区二区三区直播精品电影| 日韩精品视频在线观看网址| 亚洲欧美日韩国产中文| 久久精品国产一区二区三区| 欧美成人午夜免费视在线看片| 亚洲自拍欧美另类| 亚洲精品日韩久久久| 亚洲全黄一级网站| 国产成人av网| 亚洲白虎美女被爆操| 欧美亚洲在线视频| 中文字幕亚洲一区二区三区五十路| 91国产高清在线| 在线亚洲午夜片av大片| 亚洲欧洲一区二区三区久久| 日韩毛片在线观看| 欧美日韩国产二区| 亚洲欧美日韩国产中文专区| 中文字幕亚洲无线码在线一区| 欧美一级大片在线观看| 久久久久女教师免费一区| 欧洲亚洲免费视频| 国产久一一精品| 国产成人精品久久亚洲高清不卡| 91精品中国老女人| 国产成人精品一区二区在线| 亚洲国产精品va在线观看黑人|