Pagini recente » Cod sursa (job #1767695) | Cod sursa (job #814997) | Cod sursa (job #2442253) | Cod sursa (job #1396116) | Cod sursa (job #729232)
Cod sursa(job #729232)
#include <fstream>
#include <cstring>
#include <algorithm>
#define NMAx 2012
using namespace std;
int V[2][NMAx],Nr[2],P[10],Sol[NMAx];
bool Cmp() {
if(Nr[0]<Nr[1]) return 0;
if(Nr[1]>Nr[0]) return 1;
for(int i=1;i<=Nr[0];i++) {
if(V[0][i]<V[1][i]) return 0;
if(V[0][i]>V[1][i]) return 1;
}
return 0;
}
void Solve() {
int i,j,k;
for(i=9;i>0;i--) {
while(P[i]--) {
k=Cmp();
V[k][++Nr[k]]=i;
}
}
reverse(V[0]+1,V[0]+Nr[0]+1);
reverse(V[1]+1,V[1]+Nr[1]+1);
for(i=1;i<=Nr[0];i++)
for(j=1;j<=Nr[1];j++) {
Sol[i+j-1]+=V[0][i]*V[1][j];
k=i+j-1;
while(Sol[k]>9) {
Sol[k+1]+=Sol[k]/10;
Sol[k]%=10;
k++;
}
}
}
void Citire() {
ifstream in("prod.in");
for(int i=1;i<10;i++)
in>>P[i];
in.close();
}
void Afis() {
int i,L;
ofstream out("prod.out");
L=Nr[0]+Nr[1]-1;
while(Sol[L]) L++;
for(i=L-1;i>=1;i--)
out<<Sol[i];
out<<'\n';
out.close();
}
int main() {
Citire();
Solve();
Afis();
return 0;
}