--- title: S1B 緞帶分割 tags: solution --- # B. 緞帶分割 此題要求緞帶盡可能的被均分,又或是可以把此題看成堆積木的問題: ![](https://i.imgur.com/Q9VaJP9.png =200x) 本題的問題點是在於要如何抓出這些緞帶長度會有多少個, 並且只要稍微仔細一想不難發現,緞帶的長度只會有兩種可能:$x$ 和 $x+1$ ( 一定要把當前這一層都疊完之後才能疊下一層 ) 所以問題可以看成:長度 $x$ 會有幾條、長度 $x+1$ 會有幾條 而 $x$ 可以用一個很簡單的方法就算出來:$x=\lfloor L/k \rfloor$, 而 $x+1$ 的長度一共會 $L\%k$ 條 ( 或是可以寫成 $L-kx$ )。 ![](https://i.imgur.com/VfSZpJi.png =400x) 因此,基本上可以得出兩種長度的佔用長度分別為: - 短的緞帶長 $L/k$,共有 $k-L\%k$ 條 - 長的緞帶長 $L/k+1$,共有 $L\%k$ 條 ```cpp= # include <iostream> using namespace std; int main(){ int T,L,K; cin>>T; while(T--){ cin>>L>>K; cout<<L/K<<'*'<<(K-L%K); if(L%K > 0) cout<<", "<<(L/K+1)<<'*'<<(L%K); cout<<'\n'; } } ```