据说杭电acm的题目是比较简单的。可是为什么Pro 1002提交总是Wrong Answer呢?代码如下:百思不得其解。先留着,以后回来再看。
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1002
#include<iostream>
using namespace std;
const int length = 1000;
void printArray(int *array, int l)
{
int isZero = true;
for(int temp = 0; temp < l; temp ++)
{
if(array[temp] == 0)
isZero *= 1;
else
isZero *= 0;
if(!isZero)
{
for(int i = temp; i < l; i ++)
cout << array[i];
break;
}
}
}
int main()
{
int a[length];
int al;
int b[length];
int bl;
int sum[length];
int line;
int sl;
char c;
cin >> line;
c = cin.get();
for(int k = 0; k < line; k ++)
{
int i = 0;
int j = 0;
while(1)
{
c = cin.get();
if((c != '\n') && (c != ' '))
a[i ++] = int(c) - int('0');
else
break;
}
while(1)
{
c = cin.get();
if((c != '\n') && (c != ' '))
b[j ++] = int(c) - int('0');
else
break;
}
al = i;
bl = j;
for(int k = 0; k <length; k ++)
sum[k] = 0;
sl = i>j ? i : j;
int tag = 0;
for(int k = sl; k >= 0; k --)
{
if(i > 0 && j > 0)
{
sum[k] = sum[k] + a[-- i] + b[-- j] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
else if(i <= 0 && j > 0)
{
sum[k] = sum[k] + b[-- j] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
else if( i > 0 && j <= 0)
{
sum[k] = sum[k] + a[-- i] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
else
{
sum[k] = sum[k] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
}
cout << "Case " << (k + 1) << ":" << endl;
printArray(a, al);
cout << " + ";
printArray(b, bl);
cout << " = ";
printArray(sum, sl+1);
cout << endl << endl;
}
return 0;
}
题目:
http://acm.hdu.edu.cn/showproblem.php?pid=1002
#include<iostream>
using namespace std;
const int length = 1000;
void printArray(int *array, int l)
{
int isZero = true;
for(int temp = 0; temp < l; temp ++)
{
if(array[temp] == 0)
isZero *= 1;
else
isZero *= 0;
if(!isZero)
{
for(int i = temp; i < l; i ++)
cout << array[i];
break;
}
}
}
int main()
{
int a[length];
int al;
int b[length];
int bl;
int sum[length];
int line;
int sl;
char c;
cin >> line;
c = cin.get();
for(int k = 0; k < line; k ++)
{
int i = 0;
int j = 0;
while(1)
{
c = cin.get();
if((c != '\n') && (c != ' '))
a[i ++] = int(c) - int('0');
else
break;
}
while(1)
{
c = cin.get();
if((c != '\n') && (c != ' '))
b[j ++] = int(c) - int('0');
else
break;
}
al = i;
bl = j;
for(int k = 0; k <length; k ++)
sum[k] = 0;
sl = i>j ? i : j;
int tag = 0;
for(int k = sl; k >= 0; k --)
{
if(i > 0 && j > 0)
{
sum[k] = sum[k] + a[-- i] + b[-- j] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
else if(i <= 0 && j > 0)
{
sum[k] = sum[k] + b[-- j] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
else if( i > 0 && j <= 0)
{
sum[k] = sum[k] + a[-- i] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
else
{
sum[k] = sum[k] + tag;
tag = sum[k] / 10;
sum[k] %= 10;
}
}
cout << "Case " << (k + 1) << ":" << endl;
printArray(a, al);
cout << " + ";
printArray(b, bl);
cout << " = ";
printArray(sum, sl+1);
cout << endl << endl;
}
return 0;
}