用于计算未受伤害的叶数的代码

时间:2016-10-04 17:58:05

标签: c++ algorithm vector runtime-error long-integer

最近我正在练习this问题,我需要计算毛虫未受伤害的叶子总数。

幸运的是,我的代码非常快,只是发现IARCS法官给了Runtime Error

以下是特定的测试用例:

762744433 19
96412 40852 19611 563380 236733 559627 750968 413673 300332 65 682403 441221 180068 668364 493413 443706 613246 715846 728157

以下是代码:

#include <iostream>
#include <vector>
#include <algorithm>

int main (int argc, char const* argv[])
{
    long long n , k;
    std::cin >> n >> k;
    long long caterpillars[k];
    std::vector<long long>v;
    for(int i=0;i<k;i++){
        std::cin >> caterpillars[i];
    }
    for(int i=0;i<k;i++){
        for(int j=0;caterpillars[i]*j +1 <= n;j++){
            int temp = caterpillars[i]*j +1;
            v.push_back(temp);
        }
    }
    sort(v.begin(),v.end());
    int number = 0;
    long long prev = 0;
    for(int i=0;i<v.size();i++){
        if(v[i] != prev){
            number++;
        }
        prev = v[i];
    }
    std::cout << n - number << std::endl;
    return 0;
}

但令人惊讶的部分是代码在我的电脑中给出了准确的答案,gdb也做了同样的事情,但是那些糟糕的IARCS判断。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

判断指定的内存限制为64 MB。您用来解决问题的过程并不能保证消耗的空间小于64 MB。实际上它会在很多测试用例中超过限制。示例:1000000000 1 2.

最具竞争力的编程网站确实区分了运行时错误和超出内存限制。如果IARCS也这样做,则必须有其他原因导致错误。