dfs大樓之洛谷1988

2021-08-21 04:27:06 字數 810 閱讀 8416

2008北京奧運會,你想成為四川汶川的一名火炬手,經過層層選拔,終於到了最後一關,這一關是一道很難的題:任意給定乙個正整數n(n<=100000),求乙個最小的正整數m,使得n * m的十進位制表示形式裡只含有1和0。

輸入格式:

一行,輸入乙個整數n。

輸出格式:

輸出一行,如果有解,輸出最小的m,否則輸出「no solution」

輸入樣例#1:

複製

12

輸出樣例#1:

複製

925

個人觀點:這道題怎麼看都不像是乙個dfs的題目,反而覺得是乙個bfs;

於是我想到了廣搜的簡單方法:(這題比較良心,不需要高精度,開long long就行了)

首先,肯定不會去列舉因子,而去列舉所得到的積:

按照1,10,11,100,101,110......的去列舉就可以了。所以怎麼去列舉呢?

我的方法:

首先我們需要乙個佇列queueq;

然後,把 1 push進去;

然後進行廣搜:

對於每乙個首項q.front(),我們先判斷他是否能被n整除,如果能,則break;

若不能,則讓首項出列,再把 首項*10 和 首項*10 +1兩項push進去;

這樣既能保證是從小到大列舉,又可以保證不遺漏,所以我自己的**如下:

#include

#include

#include

using namespace std;

queueq;

int main()

cout《我還在思考dfs的方法。。。。。。

dfs大樓之洛谷1706

輸出自然數1到n所有不重複的排列,即n的全排列,要求所產生的任一數字序列中不允許出現重複的數字。輸入格式 n 1 n 9 輸出格式 由1 n組成的所有不重複的數字序列,每行乙個序列。每個數字保留5個常寬。輸入樣例 1 複製3 輸出樣例 1 複製1 2 3 1 3 2 2 1 3 2 3 1 3 1 ...

dfs大樓之洛谷1691

設r 是要進行排列的n個元素。其中元素r1,r2,rn可能相同。使設計乙個演算法,列出r的所有不同排列。給定n以及待排列的n個元素。計算出這n個元素的所有不同排列。輸入格式 第1行 元素個數n 1 n 500 第2行 一行字串,待排列的n個元素 輸出格式 計算出的n個元素的所有不同排列,最後一行是排...

dfs大樓之洛谷1036

已知 n n 個整數 x 1,x 2,x nx1 x2 xn 以及 1 1 個整數 k k k k n 從 n n 個整數中任選 k k 個整數相加,可分別得到一系列的和。例如當 n 4,k 3n 4,k 3 4 4 個整數分別為 3,7,12,193,7,12 19 時,可得全部的組合與它們的和為...