| Task: | Contests |
| Sender: | quasisphere |
| Submission time: | 2015-10-07 16:45:09 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | ACCEPTED | 0.06 s | details |
| #4 | ACCEPTED | 0.05 s | details |
| #5 | ACCEPTED | 0.05 s | details |
| #6 | ACCEPTED | 0.05 s | details |
| #7 | ACCEPTED | 0.06 s | details |
| #8 | ACCEPTED | 0.05 s | details |
| #9 | ACCEPTED | 0.06 s | details |
| #10 | ACCEPTED | 0.07 s | details |
| #11 | ACCEPTED | 0.05 s | details |
| #12 | ACCEPTED | 0.05 s | details |
| #13 | ACCEPTED | 0.06 s | details |
| #14 | ACCEPTED | 0.06 s | details |
| #15 | ACCEPTED | 0.06 s | details |
| #16 | ACCEPTED | 0.06 s | details |
| #17 | ACCEPTED | 0.05 s | details |
| #18 | ACCEPTED | 0.06 s | details |
| #19 | ACCEPTED | 0.05 s | details |
| #20 | ACCEPTED | 0.05 s | details |
Code
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
#include<cmath>
#include<utility>
using namespace std;
const int64_t MOD=1000000007;
int64_t power_mod(int64_t a, int64_t k, int64_t m) {
if(k == 0) return 1;
int64_t res=power_mod(a, k/2, m);
if(k%2 == 0) return res*res%m;
return a*res%m*res%m;
}
int64_t binomial(int64_t m, int64_t n) {
int64_t prod=1;
for(int64_t i=m-n+1;i<=m;i++) {
prod*=i;
prod%=MOD;
}
for(int64_t i=1;i<=n;i++) {
prod*=power_mod(i,MOD-2,MOD);
prod%=MOD;
}
return prod;
}
int main(void) {
int64_t n,s;
cin >> n >> s;
int64_t empties=0;
for(int64_t i=0;i<n;i++) {
string st;
cin >> st;
if(st.size() == 1) {
if(st[0] == '?') {
empties++;
} else {
int64_t foo=st[0]-'0';
s-=foo;
}
} else {
int64_t foo=10*(st[0]-'0') + st[1]-'0';
s-=foo;
}
}
int64_t total=0;
for(int64_t m=0;11*m<=s;m++) {
int64_t u=s - 11*m;
int64_t blah=binomial(u+empties-1,empties-1)*binomial(empties, m)%MOD;
if(m%2) total-=blah;
else total+=blah;
total%=MOD;
}
if(total < 0) total+=MOD;
cout << total << endl;
return 0;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 100 722 10 ? 8 ? 8 5 1 3 ? 2 5 3 1 ? ?... |
| correct output |
|---|
| 55143150 |
| user output |
|---|
| 55143150 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 100 741 1 6 ? 7 2 ? 5 1 2 3 10 ? ? 5 4... |
| correct output |
|---|
| 598236954 |
| user output |
|---|
| 598236954 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 25 83 ? 5 4 7 9 ? 3 ? ? 4 3 5 ? ? ? ... |
| correct output |
|---|
| 77504288 |
| user output |
|---|
| 77504288 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 100 729 8 5 5 2 9 ? 2 ? ? 1 5 ? ? 9 ? ... |
| correct output |
|---|
| 579081161 |
| user output |
|---|
| 579081161 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 3 11 7 ? ? |
| correct output |
|---|
| 5 |
| user output |
|---|
| 5 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 100 423 ? ? ? ? ? 3 ? 6 ? 2 ? ? 9 1 5 ... |
| correct output |
|---|
| 73043117 |
| user output |
|---|
| 73043117 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 100 706 3 ? 9 ? ? ? ? ? ? 9 ? 1 ? 1 5 ... |
| correct output |
|---|
| 169594458 |
| user output |
|---|
| 169594458 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 100 719 10 ? 2 ? 8 ? ? 4 7 ? 1 ? ? ? ?... |
| correct output |
|---|
| 371478559 |
| user output |
|---|
| 371478559 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 75 545 9 ? 9 ? 10 9 9 1 5 ? 2 ? 5 9 4... |
| correct output |
|---|
| 189257897 |
| user output |
|---|
| 189257897 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 100 661 ? 8 ? 8 10 ? ? 5 ? 5 10 ? ? 1 ... |
| correct output |
|---|
| 589662095 |
| user output |
|---|
| 589662095 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 32 172 ? ? ? ? ? ? 7 8 ? ? 9 ? ? 1 7 ... |
| correct output |
|---|
| 319164449 |
| user output |
|---|
| 319164449 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 100 580 8 ? 9 ? ? 6 4 ? ? ? 6 ? ? 4 ? ... |
| correct output |
|---|
| 671479185 |
| user output |
|---|
| 671479185 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 96 724 1 ? ? ? 7 ? ? ? 10 ? ? 7 2 ? 8... |
| correct output |
|---|
| 627075870 |
| user output |
|---|
| 627075870 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 100 289 4 ? 9 ? 6 ? ? 2 ? ? 1 8 ? ? ? ... |
| correct output |
|---|
| 672526186 |
| user output |
|---|
| 672526186 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 12 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 100 0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 70 700 10 10 10 10 10 10 10 10 10 10 ... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 18
Verdict: ACCEPTED
| input |
|---|
| 100 1000 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 19
Verdict: ACCEPTED
| input |
|---|
| 57 213 ? ? 8 ? ? ? 10 1 1 8 ? ? 6 5 4... |
| correct output |
|---|
| 843378101 |
| user output |
|---|
| 843378101 |
Test 20
Verdict: ACCEPTED
| input |
|---|
| 100 306 ? 10 ? ? ? 10 6 ? ? ? 3 7 1 ? ... |
| correct output |
|---|
| 646826362 |
| user output |
|---|
| 646826362 |
