由于时间限制,我的代码未能通过测试,我该如何减少代码的工作时间?

问题描述

问题 - 给定两个正整数 a 和 b。只需一步,您就可以将 a 增加 1(将 a 替换为 a+1)。你的任务是找到你需要做的最小移动次数,以使 a 被 b 整除。有可能您必须进行 0 次移动,因为 a 已经可以被 b 整除。您必须回答 t 个独立的测试用例。

输入 - 输入的第一行包含一个整数 t (1≤t≤10^4)——测试用例的数量。然后是 t 个测试用例。

测试用例的唯一一行包含两个整数a和b(1≤a,b≤10^9)。

输出 - 对于每个测试用例,打印答案 - 使 a 被 b 整除所需的最少移动次数

Code Forces 问题链接 - https://codeforces.com/problemset/problem/1328/A

时间限制 - 每个测试用例 1 秒

我的代码 -

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
 
    long long t,a,b,x;
    cin >> t;
    for(long long i=0;i<t;i++){
        cin >> a >> b;
        x = a;
        while(a%b!=0){
            a++;
        }
        cout << a-x << endl;
    }
}

当测试用例数为 10000 并且输入数量很大时失败。我可以做些什么来减少代码的执行时间?

解决方法

您需要找到 m 使得 a + m = kb 且 0≤m

所以 m = 天花板 (a/b) b - a.