Pagini recente » Cod sursa (job #1346143) | Cod sursa (job #2074368) | Cod sursa (job #1274757) | Cod sursa (job #1767330) | Cod sursa (job #1527742)
#include <fstream>
using namespace std;
ifstream f("prod.in");
ofstream g("prod.out");
int poz , sum , c[15] , nr1[1005] , nr2[1005] , sol[1000005];
void prod(int a[] , int b[] , int c[]);
int comp(int a[] , int b[]);
void afis(int a[]);
int main() {
for(int i = 1 ; i <= 9 ; ++i) {
f >> c[i];
sum += c[i];
}
int poz = 9;
for(int i = 1 ; i <= sum ; ++i) {
while(c[poz] == 0) {
--poz;
}
if(comp(nr1 , nr2)) {
nr1[++nr1[0]] = poz;
}
else {
nr2[++nr2[0]] = poz;
}
--c[poz];
}
prod(nr1 , nr2 , sol);
afis(sol);
return 0;
}
int comp(int a[] , int b[]) {
if(a[0] < b[0]) {
return 1;
}
if(b[0] < a[0]) {
return 0;
}
for(int i = 1 ; i <= a[0] ; ++i) {
if(a[i] < b[i]) {
return 1;
}
if(a[i] > b[i]) {
return 0;
}
}
return 1;
}
void prod(int a[] , int b[] , int c[]) {
int i , j , t = 0 , pi , pj;
for(i = 1 , pi = a[0] ; pi >= 1 ; --pi , ++i) {
t = 0;
for(j = 1 , pj = b[0] ; pj >= 1 ; ++j , --pj) {
c[i + j - 1] = c[i + j - 1] + a[pi] * b[pj] + t;
t = c[i + j - 1] / 10;
c[i + j - 1] = c[i + j - 1] % 10;
}
if (t)
c[i + j - 1] = t;
}
c[0] = a[0] + b[0] - 1;
if (c[c[0] + 1])
c[0]++;
}
void afis(int a[]) {
for(int i = a[0] ; i >= 1 ; --i) {
g << a[i];
}
g << '\n';
}