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

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

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

2019-11-14 09:42: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
久久久久久久久久久免费精品| 国产精品黄色影片导航在线观看| 中文日韩在线观看| 亚洲福利视频免费观看| 国产成人久久精品| 欧美成在线视频| 69av视频在线播放| 国产精品中文字幕久久久| 亚洲三级 欧美三级| 91亚洲精品一区| 色妞欧美日韩在线| 亚洲第一二三四五区| 精品国产欧美成人夜夜嗨| 中文字幕成人在线| 91精品综合视频| 国产一区二区三区久久精品| 97视频在线观看免费高清完整版在线观看| 国产精品九九九| 久久久91精品国产一区不卡| 青青在线视频一区二区三区| 国产精品久久久久久久app| 一区二区欧美久久| 色老头一区二区三区在线观看| 少妇激情综合网| 亚洲美女av在线播放| 日韩av电影在线网| 日韩av色综合| 2023亚洲男人天堂| 欧美亚洲国产视频小说| 青青久久av北条麻妃黑人| 欧美日韩国产一区二区三区| 另类视频在线观看| 成人性教育视频在线观看| 国产精品综合网站| 国产精品久久久久秋霞鲁丝| 国产欧美一区二区三区久久人妖| 国产精品视频不卡| 欧美一级大胆视频| 国产精品视频最多的网站| 理论片在线不卡免费观看| 久久久天堂国产精品女人| 国产欧美日韩丝袜精品一区| 日韩视频免费看| 国产精品视频自在线| 一区二区三区天堂av| 日韩av资源在线播放| 韩国精品美女www爽爽爽视频| 日本久久91av| 国产偷亚洲偷欧美偷精品| 久久综合伊人77777尤物| 国产亚洲欧洲高清| 欧美成人精品三级在线观看| 中文字幕欧美国内| 亚洲高清不卡av| 亚洲色图美腿丝袜| 岛国av一区二区| 精品日本高清在线播放| 国产欧美精品在线播放| 亚洲人成网7777777国产| 日本久久久久亚洲中字幕| 91在线直播亚洲| 国产精品中文在线| 78色国产精品| 成人啪啪免费看| 欧美性猛交xxxx乱大交| 精品久久久久久久久中文字幕| 一区二区福利视频| 色偷偷888欧美精品久久久| 热re91久久精品国99热蜜臀| 亚洲精品一区二区网址| 91在线无精精品一区二区| 亚洲人成在线免费观看| 欧美日韩免费看| 91美女片黄在线观看游戏| 清纯唯美亚洲激情| 91天堂在线视频| 亚洲国产高清福利视频| 一区二区三区视频免费在线观看| 欧美激情免费观看| 亚洲www永久成人夜色| xxxx欧美18另类的高清| 欧美中文在线字幕| 久久全国免费视频| 日韩精品视频观看| 欧美色视频日本版| 欧美精品在线免费播放| 欧美激情视频一区| 亚洲精品综合久久中文字幕| 欧美做爰性生交视频| 亚洲美女av电影| 在线亚洲午夜片av大片| 日韩av一区在线| 国产精品成人aaaaa网站| 国产精品一区二区久久精品| 97国产精品视频| 精品夜色国产国偷在线| 亚洲视频在线观看免费| 国产精品三级美女白浆呻吟| 欧美另类暴力丝袜| 欧洲永久精品大片ww免费漫画| 91理论片午午论夜理片久久| 久久精品福利视频| 亚洲黄色av女优在线观看| 国产这里只有精品| 欧美激情视频一区| 中文字幕亚洲欧美日韩2019| 国内免费精品永久在线视频| 久久69精品久久久久久久电影好| 国产日韩欧美黄色| 欧美激情在线观看视频| 国产精品高清网站| 国产精品视频1区| 国外成人在线播放| 九九精品在线观看| 欧美亚洲在线视频| 欧亚精品在线观看| 粉嫩老牛aⅴ一区二区三区| 668精品在线视频| 青青久久av北条麻妃黑人| 国产成人在线一区二区| 91精品国产91久久久久久最新| 在线中文字幕日韩| 日韩av一区二区在线| 日韩视频中文字幕| 亚洲精品电影网站| 亚洲精品久久久久久久久久久久久| 福利一区视频在线观看| 国产精品日韩在线观看| 成人久久精品视频| 国产精品91视频| 国产精品久久久久久久电影| 97人洗澡人人免费公开视频碰碰碰| www.日本久久久久com.| 国产亚洲欧洲在线| 亚洲成人av在线| 96sao精品视频在线观看| 色偷偷91综合久久噜噜| 国产aⅴ夜夜欢一区二区三区| 亚洲成年人在线| 欧美精品日韩三级| 久久99久久99精品中文字幕| 一个人看的www欧美| 国产精品激情av在线播放| 欧美情侣性视频| 色妞久久福利网| 成人做爰www免费看视频网站| 久久91精品国产| 97在线免费观看视频| 欧洲日韩成人av| 日韩欧美中文在线| 亚洲欧美国产日韩中文字幕| 国产精品扒开腿爽爽爽视频| 高清一区二区三区日本久| 国产视频综合在线| 9.1国产丝袜在线观看| 日韩av在线影院| 57pao成人国产永久免费| 欧美性猛交xxxx偷拍洗澡| 欧美成人免费在线观看| 成人在线激情视频| 久久久免费精品视频| 国产精品第8页| 国产亚洲精品久久久| 国产亚洲免费的视频看|