gpt4 book ai didi

c++ - 为什么我的代码在 Online Judge 和本地给出不同的答案?

转载 作者:太空狗 更新时间:2023-10-29 19:45:17 25 4
gpt4 key购买 nike

我对竞争性编程还很陌生,我已经在 CodeForces 中遇到过几次这个问题,但我不太确定发生了什么。

问题是,当我运行这段代码时(来自 http://codeforces.com/contest/1041/problem/B 的例子):

#include <iostream>

long gcd (long n1, long n2) {
return (n2 == 0) ? n1 : gcd (n2, n1 % n2);
}

long min(long a, long b){
return a < b ? a : b;
}

int main(){
std::ios_base::sync_with_stdio(false);

long a, b, x, y;

std::cin >> a >> b >> x >> y;

long g = gcd(x, y);

std::cout << min(a / (x / g), b / (y / g)) << std::endl;

输入(codeforces 页面中问题的第 4 个输入)

1000000000000000000 1000000000000000000 999999866000004473 999999822000007597

本地我得到正确的答案是

1000000063

但是当我将它发送到 CodeForces 时,它给了我“错误的答案”,当我去检查它得到的答案时,它说

0

为了检查我的代码是否有问题,我 coded the same thing in Java它工作得很好。

所以我检查了它是否与我发送的版本有关(C++17)发送不同的版本(C++11),但再次得到“错误答案”但答案

1

所以我想知道我的 C++ 代码在 Online Judge 中没有按预期运行有什么问题。

附言。我尝试在 valgrind 上运行它,但似乎也没有收到任何警告。

最佳答案

好像long在 Codeforces 上只有 4 个字节,最多只能存储 2,147,483,647,而它可以在您的本地环境中存储更大的值(可能是 8 个字节)。

您可以添加 #include <cstdint>并使用类型 int64_t使用具有更高兼容性的 8 字节有符号整数。

关于c++ - 为什么我的代码在 Online Judge 和本地给出不同的答案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com