課外練習 迴圈之後 D Gakki的疑問

2021-10-01 18:08:52 字數 1538 閱讀 9234

眾所周知,新垣結衣(gakki)很愛她的老公姚師姐,6月11日是gakki的生日,姚師姐想送她生日禮物,於是跑去問:「老婆,你最近缺些什麼嗎?」,可愛的gakki很傲嬌,她拿起筆在紙上寫了寫,然後羞澀地塞給師姐,說:「這道題,你能在1s裡解出來,就給我買鑽石項鍊,解不出來,就買輛蘭博基尼吧!」,只見紙上寫著:

如果乙個數字只含有0和1,那麼這個數字我稱為漂亮數,比如1, 0, 11, 10111這些數都是漂亮數,而2,3,200,91這些都不是,現在給你乙個數字n,你是否能夠把它拆成幾個漂亮數的和,並且這些漂亮數的個數最少?

姚師姐大為震驚,當然不是因為蘭博基尼很貴,他不差錢,而是因為傻白甜的老婆居然會出題考自己,姚師姐成功在1s內解出了這道題目,現在這道題目被**扒了出來,你是否有能力達到gakki老公的水平呢?

第一行輸入乙個樣例數t,表示一共有多少數字需要計算,接下來有t行,每行1個數字n,對於每個數字n,求出組成它的最少數量的漂亮數字。1<=t<=10000, 1<=n<=1e6

對於每個數字n,輸出兩行答案,第一行是漂亮數的個數,第二行是組成它的漂亮數,按大小從小到大輸出,並且在公升序情況下,小的數字盡量小。

例如113 = 1 + 11 + 101 = 1 + 1 + 111

你所得到的答案應該是1+1+111。

121 = 10 + 111 = 11 + 110

你所得到的答案應該是10+111。29

3291 1 1 1 1 1 1 1 1

310 11 11

#include

using

namespace std;

intmain()

} k=0;

while

(n>0)

n=n-c[k]

; k++;}

else

n=n-c[k]

; k++;}

} cout<"\n"

;for

(i=k-

1;i>=

0;i--)}

}

#include

using

namespace std;

intmain()

for(i=l-

1;i>=

0;i--

) n=n-c[k]

; k++;}

cout<"\n"

;for

(i=k-

1;i>=

0;i--)}

}

一開始打算是用陣列儲存所有的漂亮數,每次減去最接近的漂亮數

首先出現問題120資料會減111+9個1→加入10的倍數判斷解決

然後發現9050這種資料會用1111去減,這樣在如果仍加入判斷條件去分割十分困難

思考後發現,對乙個數,每乙個位不為0對應1,等於0則對應1

如:9050→1010

這樣子就可以減去最合適的數

接著打算取餘直接存進整型陣列,然後發現這樣子有多個0的時候不好判斷,

最後改用字元陣列存1和0,再化位整型

課外練習4 2

第一題 任意輸入乙個int整數,顯示為32位二進位制值 我的 include using namespace std intmain return0 輸入樣例 3輸出樣例 5我的 include using namespace std intmain if flag return0 第三題 程式設計...

oracle課外練習3

create table sporter sporterid number,name varchar2 20 varchar2 5 department varchar2 20 insert into sporter values 1001,李盼 女 計算機系 insert into sporter...

課外練習6 1答案

第一題 先讀入n n 100 再讀入n個整數,計算其最大的一段的和,輸出該段的和以及起始下標和終止下標 下標從0開始 例如輸入 8 4 5 7 6 9 5 5 9 輸出 15 1,4 正解 暴力列舉 思想 列舉出陣列的所有子陣列的和即可。輔助函式 計算一段陣列的值的函式 例如 int arr 計算a...