Pagini recente » Cod sursa (job #3233120) | Cod sursa (job #3262621) | Cod sursa (job #808125) | Cod sursa (job #765202) | Cod sursa (job #498810)
Cod sursa(job #498810)
#include <fstream>
int compara (int a[], int b[]) {
int i;
if (a[0]<b[0]) return 1; if(a[0]>b[0]) return 0;
for (i=1; i<=a[0]; i++) {
if (a[i]>b[i]) return 0;
if (a[i]<b[i]) return 1; } }
int invers (int a[]) {
int u,v,aux;
u=1;
v=a[0];
while (u<v) {
aux=a[u];
a[u]=a[v];
a[v]=aux;
u++;
v--; } }
void prod(int a[], int b[], int c[]) {
int t,k,i,j;
t=0;
for (i=1; i<=a[0]; i++)
for (j=1; j<=b[0];j++)
c[i+j-1]+=a[i]*b[j];
k=a[0]+b[0]+1;
for (i=1; i<=k; i++) {
c[i]+=t;
t=c[i]/10;
c[i]%=10; }
while (t) {
k++;
c[k]=t%10;
t/=10; }
c[0]=k; }
int i,j,v[9],x[9],n,a[1000],b[1000],p[10000];
using namespace std;
int main() {
ifstream f ("prod.in");
ofstream g ("prod.out");
for (i=1;i<10;i++) f>>v[i];
for (i=9;i>0;i--) for (j=1;j<=v[i];j++) {
x[n]=i;
n=n+1; }
for(i=1;i<n;i++) if (compara(a,b)==1) {
a[0]++;
a[a[0]]=x[i]; }
else {b[0]++; b[b[0]]=x[i]; }
invers(a);
invers(b);
prod(a,b,p);
for (i=p[0]; i>0; i--) g<<p[i];
f.close();
g.close();
return 0; }