关于 scanf() 和 cin 的问题

the questions about scanf() and cin

我遇到了一个问题。 link -> the problem 这是我的 solution.If 我使用 scanf,代码可以在 codeforces 上被接受,但是替换 cin 然后不,它出现错误的答案,但在我的本地解释器中使用 cin 是可以的。 为什么?

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int t;
    scanf("%d", &t);
    nt :
    while (t--) {
        long long hc, dc, hm, dm, w, a;
        long k;
        scanf("%lld%lld%lld%lld%d%lld%lld", &hc, &dc, &hm, &dm, &k, &w, &a); // ok
//        cin >> hc >> dc >> hm >> dm >> k >> w >> a; // cannot work
        for (int i = 0; i < k + 1; i++) {
            int opt = k - i;
            long long hc1 = opt * a + hc;
            long long dc1 = i * w + dc;
            long long cnt1 = hm / dc1 + (hm % dc1 > 0);
            long long cnt2 = hc1 / dm + (hc1 % dm > 0);
            if (cnt1 <= cnt2) {
                printf("YES\n");
                goto nt;
            }
        }
        printf("NO\n");
    }
}

我只是尝试了很多练习,发现问题的关键在于问题的输入。

您在第 5 行中还有另一个 scanf,您也必须将其替换。否则他们每个人都有自己的输入缓冲区并混淆。