338
Posted: Mon Jan 06, 2003 6:36 am
Huff, finally I got Accepted on this problem
. But I still got PE, it doesn't matter.
Thx Andrey Mokhov for your help.
Regards
Angga888

Thx Andrey Mokhov for your help.
Regards
Angga888
Could you let us know what is your output to:angga888 wrote:Huff, finally I got Accepted on this problem.
Code: Select all
1100 33
33 1100
33 101
33 100010
0
Code: Select all
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
char a[100],*b[2],c[20][20],d[20];
int len1,len2,i,j,max,templen;
char temp[20];
void mul()
{
int carry,temp1,i,j,k;
char temp2;
for (j=0;j<len2;j++)
{
carry=0;
for (i=0;i<len1;i++)
{
if (c[1][j]!='0')
{
temp1=((c[0][i]-48)*(c[1][j]-48)+carry)%10;
carry=((c[0][i]-48)*(c[1][j]-48)+carry)/10;
c[2+j][i+j]=temp1+48;
}
else
{
c[2+j][i+j]='\0';
carry=0;
}
}
if (carry!=0)
c[2+j][len1+j]=carry+48;
else
c[2+j][len1+j]='\0';
for (k=len1+1+j;k<20;k++)
c[2+j][k]='\0';
}
for (i=0;i<20;i++)
temp[i]=c[2][i];
for (j=3;j<len2+2;j++)
{
carry=0;
for (i=0;i<len1+len2;i++)
{
if (c[j][i]=='\0')
if (temp[i]!='\0')
temp[i]+=carry;
else if (i>=max&&carry==0)
temp[i]='\0';
else
temp[i]=carry+48;
else
{
if (temp[i]!='\0')
{
temp2=temp[i];
temp[i]=((carry+temp[i]+c[j][i]-96)%10)+48;
carry=(carry+temp2+c[j][i]-96)/10;
}
else
{
temp2=0;
temp[i]=((carry+temp[i]+c[j][i]-48)%10)+48;
carry=(carry+temp2+c[j][i]-48)/10;
}
}
}
}
}
int main(void)
{
freopen("data.txt","r",stdin);
while (1)
{
gets(a);
for (i=0;i<strlen(a);i++)
if (a[i]==9)
a[i]=' ';
b[0]=strtok(a," ");
b[1]=strtok(NULL," ");
if ((atoi(b[0])==0) && (b[1]==NULL))
return 0;
if (atoi(b[0])==0)
b[0]="0";
else if (b[0][0]=='0')
{
templen=strlen(b[0]);
for (i=0;i<templen;i++)
{
if (b[0][0]!='0')
break;
b[0]=&b[0][1];
}
}
if (atoi(b[1])==0)
b[1]="0";
else if (b[1][0]=='0')
{
templen=strlen(b[1]);
for (i=0;i<templen;i++)
{
if (b[1][0]!='0')
break;
b[1]=&b[1][1];
}
}
len1=strlen(b[0]);
len2=strlen(b[1]);
j=0;
for (i=0;i<20;i++)
if (b[1][i]!='0')
d[j++]=b[1][i];
for (i=0;i<len1;i++)
c[0][i]=b[0][len1-i-1];
c[0][len1]='\0';
for (i=0;i<len2;i++)
c[1][i]=b[1][len2-i-1];
c[1][len2]='\0';
max=0;
if (len1>=len2)
max=len1;
else
max=len2;
mul();
if ((strcmp(b[1],"0")!=0) && (strcmp(b[0],"0")!=0))
{
for (i=0;i<(strlen(temp)-len1);i++)
printf(" ");
printf("%s\n",b[0]);
for (i=0;i<(strlen(temp)-len2);i++)
printf(" ");
printf("%s\n",b[1]);
for (i=0;i<strlen(temp)-max;i++)
printf(" ");
for (i=0;i<max;i++)
printf("-");
printf("\n");
}
else if (strcmp(b[1],"0")==0)
{
printf("%s\n",b[0]);
for (i=0;i<(len1-len2);i++)
printf(" ");
printf("0\n");
for (i=0;i<max;i++)
printf("-");
printf("\n");
}
else
{
for (i=0;i<(len2-len1);i++)
printf(" ");
printf("0\n");
printf("%s\n",b[1]);
for (i=0;i<max;i++)
printf("-");
printf("\n");
}
for (j=0;j<len2;j++)
{
if ((c[1][j]!='0')&&(atoi(c[0])!=0)&&(strlen(d)!=1))
{
for (i=0;i<len1+len2;i++)
printf("%c",c[j+2][strlen(temp)-i-1]);
printf("\n");
}
else if ((len1==1 && len2==1)&&(c[1][j]!='0')&&(atoi(c[0])!=0))
{
for (i=0;i<len1+len2;i++)
printf("%c",c[j+2][strlen(temp)-i-1]);
printf("\n");
}
}
if ((atoi(c[0])!=0) && (len1!=1 || len2!=1)&&(atoi(c[1])!=0)&&(strlen(d)!=1))
{
for (i=0;i<strlen(temp);i++)
printf("-");
printf("\n");
}
if ((atoi(c[0])!=0) && (atoi(c[1])!=0))
{
if (len1!=1||len2!=1)
{
for (i=0;i<len1+len2;i++)
printf("%c",temp[strlen(temp)-i-1]);
printf("\n");
}
}
else
{
for (i=0;i<max-1;i++)
printf(" ");
printf("0");
printf("\n");
}
printf("\n");
}
return 0;
}[color=darkred][/color][color=#444444][/color][size=7][/size]
Code: Select all
[c]#include<stdio.h>
#include<string.h>
#include <stdlib.h>
char a[100],*b[20],c[20][20],d[20];
int len1,len2,i,j,max,templen;
char temp[20];
void mul()
{
int carry,temp1,i,j,k;
char temp2;
for (j=0;j<len2;j++)
{
carry=0;
for (i=0;i<len1;i++)
{
if (c[1][j]!='0')
{
temp1=((c[0][i]-48)*(c[1][j]-48)+carry)%10;
carry=((c[0][i]-48)*(c[1][j]-48)+carry)/10;
c[2+j][i+j]=temp1+48;
}
else
{
c[2+j][i+j]='\0';
carry=0;
}
}
if (carry!=0)
c[2+j][len1+j]=carry+48;
else
c[2+j][len1+j]='\0';
for (k=len1+1+j;k<20;k++)
c[2+j][k]='\0';
}
for (i=0;i<20;i++)
temp[i]=c[2][i];
for (j=3;j<len2+2;j++)
{
carry=0;
for (i=0;i<len1+len2;i++)
{
if (c[j][i]=='\0')
if (temp[i]!='\0')
temp[i]+=carry;
else if (i>=max&&carry==0)
temp[i]='\0';
else
{
temp[i]=carry+48;
carry=0;
}
else
{
if (temp[i]!='\0')
{
temp2=temp[i];
temp[i]=((carry+temp[i]+c[j][i]-96)%10)+48;
carry=(carry+temp2+c[j][i]-96)/10;
}
else
{
temp2=0;
temp[i]=((carry+temp[i]+c[j][i]-48)%10)+48;
carry=(carry+temp2+c[j][i]-48)/10;
}
}
}
}
}
int main(void)
{
freopen("data.txt","r",stdin);
while (1)
{
gets(a);
for (i=0;i<strlen(a);i++)
if (a[i]==9)
a[i]=' ';
b[0]=strtok(a," ");
b[1]=strtok(NULL," ");
if ((atoi(b[0])==0) && (b[1]==NULL))
return 0;
if (atoi(b[0])==0)
b[0]="0";
else if (b[0][0]=='0')
{
templen=strlen(b[0]);
for (i=0;i<templen;i++)
{
if (b[0][0]!='0')
break;
b[0]=&b[0][1];
}
}
if (atoi(b[1])==0)
b[1]="0";
else if (b[1][0]=='0')
{
templen=strlen(b[1]);
for (i=0;i<templen;i++)
{
if (b[1][0]!='0')
break;
b[1]=&b[1][1];
}
}
len1=strlen(b[0]);
len2=strlen(b[1]);
j=0;
for (i=0;i<20;i++)
if (b[1][i]!='0')
d[j++]=b[1][i];
for (i=0;i<len1;i++)
c[0][i]=b[0][len1-i-1];
c[0][len1]='\0';
for (i=0;i<len2;i++)
c[1][i]=b[1][len2-i-1];
c[1][len2]='\0';
max=0;
if (len1>=len2)
max=len1;
else
max=len2;
mul();
if ((strcmp(b[1],"0")!=0) && (strcmp(b[0],"0")!=0))
{
for (i=0;i<(strlen(temp)-len1);i++)
printf(" ");
printf("%s\n",b[0]);
for (i=0;i<(strlen(temp)-len2);i++)
printf(" ");
printf("%s\n",b[1]);
for (i=0;i<strlen(temp)-max;i++)
printf(" ");
for (i=0;i<max;i++)
printf("-");
printf("\n");
}
else if (strcmp(b[1],"0")==0)
{
printf("%s\n",b[0]);
for (i=0;i<(len1-len2);i++)
printf(" ");
printf("0\n");
for (i=0;i<max;i++)
printf("-");
printf("\n");
}
else
{
for (i=0;i<(len2-len1);i++)
printf(" ");
printf("0\n");
printf("%s\n",b[1]);
for (i=0;i<max;i++)
printf("-");
printf("\n");
}
for (j=0;j<len2;j++)
{
if ((c[1][j]!='0')&&(atoi(c[0])!=0)&&(strlen(d)!=1))
{
for (i=0;i<len1+len2;i++)
printf("%c",c[j+2][strlen(temp)-i-1]);
printf("\n");
}
else if ((len1==1 && len2==1)&&(c[1][j]!='0')&&(atoi(c[0])!=0))
{
for (i=0;i<len1+len2;i++)
printf("%c",c[j+2][strlen(temp)-i-1]);
printf("\n");
}
}
if ((atoi(c[0])!=0) && (len1!=1 || len2!=1)&&(atoi(c[1])!=0)&&(strlen(d)!=1))
{
for (i=0;i<strlen(temp);i++)
printf("-");
printf("\n");
}
if ((atoi(c[0])!=0) && (atoi(c[1])!=0))
{
if (len1!=1||len2!=1)
{
for (i=0;i<len1+len2;i++)
printf("%c",temp[strlen(temp)-i-1]);
printf("\n");
}
}
else
{
for (i=0;i<max-1;i++)
printf(" ");
printf("0");
printf("\n");
}
printf("\n");
}
}[/c]
Code: Select all
001 87
002 002
Code: Select all
12345
862
-----
24690
74070
98760
--------
10641390
100003
100010
------
100003
100003
-----------
10001300030
345
3455
----
1725
1725
1380
1035
-------
1191975
0
123456789
---------
0
2
324
---
8
4
6
---
648
0
234
---
0
Code: Select all
1010 1010
Code: Select all
...1010
...1010
...----
..1010
1010
-------
1020100
Code: Select all
1100 33
33 1100
33 101
33 100010
0
Code: Select all
.1100
...33
.----
.3300
3300
-----
36300
...33
.1100
.----
.33
33
-----
36300
..33
.101
.---
..33
33
----
3333
.....33
.100010
.------
....33
33
-------
3300330