北理工算法设计课的题~~
题目描述:
之前用scanf输入发现超时(竟然达到了3秒),但是换成cin输入string类之后发现竟然AC了(0.32秒)?!!wtf??
我也是很迷啊,按说不应该有这么大差别啊。
附上代码
#include<iostream>
#include<string.h>
using namespace std;
char a[20020], b[20020];
int ReverseA[20020], ReverseB[20020];
int result[40040];
int main()
{
//freopen("C:/Users/Administrator/Desktop/in.txt", "r", stdin);
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(ReverseA, 0, sizeof(ReverseA));
memset(ReverseB, 0, sizeof(ReverseB));
memset(result, 0, sizeof(result));
string a, b;
//scanf("%s", &a);
//scanf("%s", &b);
cin>>a; cin>>b;
int i, j, k;
int len_a, len_b;
len_a=a.length();
len_b=b.length();
for (i = 0; i <= len_a -1; i++)
{
ReverseA[i] = a[len_a - 1 - i] - '0';
}
for (i = 0; i <= len_b-1; i++)
{
ReverseB[i] = b[len_b - 1 - i] - '0';
}
for (i = 0; i < len_a ; i++)
{
for (j = 0; j < len_b ; j++)
{
result[i + j] += ReverseA[i] * ReverseB[j];
}
}
for (k = 0; k < len_a + len_b ; k++)
{
result[k + 1] += result[k] / 10;
result[k] = result[k] % 10;
}
while (result[k] == 0&&k>0)
{
k--;
}
for (; k >= 0; k--)
printf("%d", result[k]);
printf("\n");
//system("pause");
return 0;
}