Submission #10162
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <cstdio> #include <algorithm> #include <cstring> #include <cstdlib> using namespace std; typedef long long ll; const ll mod = 1000000007; #define SIZE 1111111 char k; int len; char a[SIZE],a_[SIZE]; int al; char b[SIZE],b_[SIZE]; int bl; ll dp[SIZE][3][2]; ll plus_(ll a,ll b) { return (a+b)%mod; } //何桁目? aとbどっちの桁がまだ一致中か 目的の桁が既に使われたか 0以外を使ったか // 1bit目:a 2bit目:b ll solve( int p, int u, int ok, int uzero) { ll res = 0; if ( p == len ) { if ( k == '0' ) if (!uzero) return 1; return ok; } if ( dp[p][u][ok] >= 0 ) return dp[p][u][ok]; for ( int i = '0' ; i <= '9' ; i++) { int nuzero = uzero|(i!= '0' ); if ( !u ) res = plus_(res,solve(p+1,u,ok|(nuzero&&i==k),nuzero)); else { int nu = u; if ( (u&1) && i < a[p] ) continue ; if ( (u&2) && i > b[p] ) continue ; if ( i != a[p] ) nu = nu&~1; if ( i != b[p] ) nu = nu&~2; res = plus_(res,solve(p+1,nu,ok|(nuzero&&i==k),nuzero)); } } return dp[p][u][ok] = res; } ll solve() { ll res = 0; for ( int i = '0' ; i <= '9' ; i++) { int u = 3; if ( i < a[0] ) continue ; if ( i > b[0] ) continue ; if ( i != a[0] ) u = u&~(1<<0); if ( i != b[0] ) u = u&~(1<<1); res = plus_(res,solve(1,u,i!= '0' &&i==k,i!= '0' )); } return res; } int main( void ) { scanf ( "%s%s %c" ,a_,b_,&k); memset (dp,-1, sizeof (dp)); al = bl = 0; while (a_[al])al++; while (b_[bl])bl++; len = max(al, bl); for ( int i = 0; i < len; i++) { if (i-(len-al) >= 0) a[i] = a_[i-(len-al)]; else a[i] = '0' ; if (i-(len-bl) >= 0) b[i] = b_[i-(len-bl)]; else b[i] = '0' ; } ll res = solve(); printf ( "%lld\n" ,res); return 0; } |
ステータス
項目 | データ |
---|---|
問題 | 0565 - 桁 |
ユーザー名 | 💩 |
投稿日時 | 2016-11-09 13:59:19 |
言語 | C++11 |
状態 | Accepted |
得点 | 2 |
ソースコード長 | 1817 Byte |
最大実行時間 | 55 ms |
最大メモリ使用量 | 65528 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | SMALL | 1 / 1 | *small* |
2 | LARGE | 1 / 1 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # | |
---|---|---|---|---|---|
00.in | AC | 55 ms | 65248 KB |
2
|
|
00large.in | AC | 46 ms | 65232 KB |
2
|
|
00sample.in | AC | 28 ms | 55752 KB |
2
|
|
00small.in | AC | 29 ms | 55740 KB |
1
|
2
|
01.in | AC | 51 ms | 65328 KB |
2
|
|
01large.in | AC | 44 ms | 65316 KB |
2
|
|
01sample.in | AC | 24 ms | 55704 KB |
2
|
|
01small.in | AC | 30 ms | 55692 KB |
1
|
2
|
02.in | AC | 49 ms | 65156 KB |
2
|
|
02large.in | AC | 47 ms | 65268 KB |
2
|
|
02sample.in | AC | 29 ms | 55912 KB |
2
|
|
02small.in | AC | 24 ms | 55896 KB |
1
|
2
|
03.in | AC | 49 ms | 65228 KB |
2
|
|
03large.in | AC | 45 ms | 65344 KB |
2
|
|
03small.in | AC | 27 ms | 55860 KB |
1
|
2
|
04.in | AC | 48 ms | 65320 KB |
2
|
|
04large.in | AC | 47 ms | 65312 KB |
2
|
|
04small.in | AC | 30 ms | 55824 KB |
1
|
2
|
05.in | AC | 50 ms | 65416 KB |
2
|
|
05large.in | AC | 44 ms | 65404 KB |
2
|
|
05small.in | AC | 30 ms | 55796 KB |
1
|
2
|
06.in | AC | 50 ms | 65260 KB |
2
|
|
06large.in | AC | 47 ms | 65380 KB |
2
|
|
06small.in | AC | 25 ms | 55768 KB |
1
|
2
|
07.in | AC | 46 ms | 65360 KB |
2
|
|
07large.in | AC | 43 ms | 65348 KB |
2
|
|
07small.in | AC | 32 ms | 55860 KB |
1
|
2
|
08.in | AC | 49 ms | 65320 KB |
2
|
|
08large.in | AC | 43 ms | 65312 KB |
2
|
|
08small.in | AC | 31 ms | 55828 KB |
1
|
2
|
09.in | AC | 45 ms | 65412 KB |
2
|
|
09large.in | AC | 44 ms | 65528 KB |
2
|
|
09small.in | AC | 27 ms | 55908 KB |
1
|
2
|