Pagini recente » Borderou de evaluare (job #2823786) | Cod sursa (job #2060905) | Cod sursa (job #2231911) | Cod sursa (job #465763) | Cod sursa (job #1795256)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
const int NMax = 10050;
bool digit[10];
int A[NMax];
int B[NMax];
inline bool Smaller() {
if(A[0] < B[0]) return true;
for(int i = A[0]; i > 0; i--) {
if(A[i] < B[i]) return true;
if(A[i] > B[i]) return false;
}
return false;
}
inline void Increment() {
int i, t = 0;
A[1] += 1;
for(i = 1; i <= A[0] || t; i++, t /= 10) {
A[i] = (t += A[i]) % 10;
}
A[0] = i - 1;
}
inline bool Ok() {
for(int i = 1; i <= A[0]; i++) if(digit[A[i]] == false) return false;
return true;
}
int main() {
ios::sync_with_stdio();
fin.tie(NULL);
int n, m, p;
fin >> n >> m >> p;
for(int i = 1; i <= n; i++) {
int x;
fin >> x;
digit[x] = true;
}
for(int i = m; i > 0; i--) fin >> A[i];
for(int i = p; i > 0; i--) fin >> B[i];
A[0] = m; B[0] = p;
int ans = 0;
Increment();
while(Smaller()) {
if(Ok()) ans++;
Increment();
}
fout << ans;
return 0;
}