Sphere在线评判发现我的代码错误,尽管它对数百个测试用例的工作正确

时间:2009-09-30 18:30:19

标签: c++

问题是这样的.. 输入

n [the number of multiplications <= 1000]
l1 l2 [numbers to multiply (at most 10000 decimal digits each)]

Text grouped in [ ] does not appear in the input file.

输出

The results of multiplications.

我的代码..

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    long int n,a,b,c,t;
    vector<long int> v(1000);
    vector<long int>::iterator p;
    cin>>n;
    t=n;
    p=v.begin();
    while(t>0)
    {
        cin>>a;
        cin>>b;
        *p=a;
        *(p+1)=b;
        p+=2;
        t--;
    }
    t=n;
    p=v.begin();
    while(t>0)
    {
        c= (*p) * (*(p+1));
        cout<<"\n"<<c;
        p+=2;
        t--;
    }
  return 0;
}

3 个答案:

答案 0 :(得分:4)

不得不谷歌你的问题来理解它是什么:here it is,请考虑你的读者:x

您的代码实际上无法正常工作:long int不够长(而且这仍然取决于实现)

你必须通过'char'读取整数'char'并滚动你自己的BigInts实现,这是我猜测的问题的难点。

此外,您将不得不处理溢出:int x int的结果可能不适合int。说实话,你应该准备好一个可能需要高达20.000位数的结果

答案 1 :(得分:3)

long int不会接近10,000个十进制数字。

  

-9,223,372,036,854,775,808 to +9,223,372,036,854,775,807

答案 2 :(得分:0)

您可以找到程序将通过的100个测试用例并不奇怪。

在大多数32位编译器上,long int(也写为long)是一个32位数字。它可以容纳大约40亿个唯一值(这是一个10位数字)。因此,如果您只发现了程序通过的100个测试用例,那么您并没有真正尝试过!

你有没有试过让你的程序乘以291087345245742687609834756790356568098645乘以100108810983456785767868356745567566892348745?