两段代码有什么区别?

问题描述 投票:-3回答:1

所以最近我试图解决一个由于某些原因我写了一些代码而无法工作的问题(代码#1)

#include <iostream>

typedef long long ll;
using namespace std;
ll k;
ll x, t;

int main()
{
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    cin >> t;
    while(t--)
    {
        cin >> k >> x;
        ll i = 0;
        while(i < 10)
        {
            if (i % 9 == x)
                break;
            ++i;
        }
        k--;
        i += 9*k;
        cout << i << "\n";
    }
}

而下面的代码确实起作用

#include <iostream>

typedef long long ll;
using namespace std;
ll k;
ll x, t;

int main()
{
    cin.tie(NULL);
    ios_base::sync_with_stdio(false);

    cin >> t;
    while(t--)
    {
        cin >> k >> x;
        k--;
        ll i = 9*k + x;
        cout << i << "\n";
    }
}

x的约束:1 <= x <= 9k:1 <= k <= 10 ^ 12。请注意,x永远不会为0,因此从根本上讲,i为1/0的问题并不是原因。但是我仍然不明白为什么这样做,因为结果似乎是一样的。和反例有什么区别?

c++ while-loop
1个回答
0
投票

此代码块

© www.soinside.com 2019 - 2024. All rights reserved.