微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

问题 - 给定两个正整数 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.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。