這麼短的題面一定不會很難吧

2021-10-12 13:58:08 字數 1356 閱讀 1688

g - 這麼短的題面一定不會很難吧

description

你有乙個整數 nn 和 ss 。一步中你可以使 nn 增加 11(n= n+1n=n+1)。找到最小步數使得 nn 的每一位加起來小於或等於 ss。

input

第一行包含乙個整數 tt (1\le t\le 2·10^41≤t≤2⋅10

4)——測試資料組數。隨後有t組測試資料

每組測試資料報含兩個整數 nn 和 ss (1\le n\le 10^;1\le s \le 162)(1≤n≤10

15;1≤s≤162)。

output

每組測試資料輸出答案:將n變為每一位數字的和小於等於 ss 的最小步數。

sample

input

52 1

1 1500 4

217871987498122 10

100000000000000001 1

output80

5002128012501878

899999999999999999

hint

對於第三組資料:n = 500 + 500 = 1000 => 1+0+0+0<4n=500+500=1000=>1+0+0+0<4

貪心題目

1.首先判斷所有位數加起來是否小於等於n,並且把所有的位數的數存進陣列裡;

若等於,直接輸出0;

2.從高位數開始判斷,若sum>=m;進製,並且後面的位數全部變成0,生成乙個新的數字;

3.最後最初的數字減去這個新生成的數字就是答案;在這裡插入**片

#include

using

namespace std;

#define ll long long

intmain()

; cin>>s>>m;

int sum=0;

int len=0;

long

long

int t=s;

while

(s)//判斷是否相同並且存進陣列

if(sum=

=m) cout<<

"0"

if(flag) b[

++len1]=0

;else b[

++len1]

=a[i];}

//若sum>=m,進製,並且後面所有的位數全為0;9進製變成10不影響;

for(

int i=

0;i<=len1;i++

) cout

}

總結

一般遇到這種型別,數字轉換,1e10以上,可以考慮用陣列存,然後在進行解決。

c 這麼短的題面一定不會很難吧

description 你有乙個整數n和s。一步中你可以使n增加1 n n 1 找到最小步數使得n的每一位加起來小於或等於s。lnput 第一行包含乙個整數t 1521 115004 217871987498122 10100000000000000001 1output 8 0500 212801...

你們,一定不會丟下我

前些天,我乘汽車回娘家。大清早就買了車票,坐在車上等待,車上也有不少焦急等待的乘客。不時有心急的人下車察看一番,試圖尋找司機的蹤影,而後無奈地搖搖頭,急切地看看手錶,打打手機。從朝陽初公升,一直等到日上中天,還是不見司機來開車。夏日的驕陽蒸得車廂內漸漸悶熱,不耐煩的人們開始紛紛抱怨。人們的心情也像那...

某人一定不會的 重口味線段樹

注意求m的地方 for m 1 m n 1 m 2 爭論了半天的n後面是否 1 是否進行越界處理 後來得出的結論是 1,浪費空間 不加,遇到特殊情況有安全隱患,但證明,對於t,如果為偶數,則不進行處理,所以,可以不加.1 int query int s,intt 7 return ans 8 9vo...