Problem - 1409D - Codeforces

题意:
你得到了一个正整数n。在一次移动中,你可以使n增加1(即使n:=n+1)。你的任务是找出为了使n的数位之和小于或等于s,你需要执行的最小移动数。
你必须回答t个独立的测试案例。
输入
输入的第一行包含一个整数t(1≤t≤2⋅104)--测试案例的数量。接着是t个测试用例。
测试用例的唯一一行包含两个整数n和s(1≤n≤1018;1≤s≤162)。
输出
对于每个测试用例,打印答案:为了使n的数位之和小于或等于s,你需要执行的最小移动数。
例子
输入
5
2 1
1 1
500 4
217871987498122 10
100000000000000001 1
输出
8
0
500
2128012501878
899999999999999999
题解:
题意很明确,模拟即可
但是看到大佬的代码发现还能这样写,极其简洁
我们直接从末尾开始枚举,先让n + 当前的数位
1~9 10
10 ~99 100
.... b
然后减n%(b)的数
看符不符合条件即可
#include
#include
#include
上一篇:PICO《轻世界》体验:随心畅玩,洒脱创作,潜力无限
下一篇:数据结构与算法简介