UVA - 10106 Product
题目大意:高精度的乘法
样例也出了,UVA的DEBUG也对比了,就是WA……占坑,过段时间看看能不能解决
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main() {
char a[255] , b[255] ;
int r[600];
int i , j , k , l1,l2 ,sav1 ;
memset(a , '\0' ,sizeof(a));
memset(b , '\0' ,sizeof(b));
while( ~scanf("%s%s",a,b)) {
l1 = 599;
memset(r , 0 , sizeof(r));
for( i = 254 ; i >= 0 ; i-- ) {
if( b[i] >= '0' && b[i] <='9') {
l2 = l1;
for(j = 254 ; j >= 0 ;j--) {
if( a[j] >= '0' && a[j] <= '9' ) {
k = l2;
sav1 = ((int)(b[i]) - '0')*((int)(a[j])-'0');
while( sav1 !=0 ) {
r[k] += sav1%10;
k--;
sav1 /= 10;
}
l2--;
}
}
l1--;
}
}
for( j = 599 ; j >=0;j--) {
if(r[j] > 9 ) {
r[j-1] += r[j]/10;
r[j] = r[j]%10;
}
}
i = 0;
while( !r[i] && i < 600) { i++;}
if(i == 600) cout << '0';
while( i < 600 ){
cout << r[i];
i++;
}
cout << endl;
memset( a , '\0' , sizeof(a));
memset( b , '\0' , sizeof(b));
}
return 0;
}