題目 1117 K 進製數

2021-10-09 23:49:18 字數 970 閱讀 8795

題目的意思就乙個n位的k進製數中不能有2個及2個以上的0是相鄰的,問這樣的數一共有多少個

首位肯定不能為0,前面的數如果為0則後面的數可以是除了0以外的任意數,前面的數如果不為0則後面的數就可以為任意值。

**實現只不過是模擬上面的過程,用乙個標記指示某一位是不是為0,如果前一位是0,那當前這位就一種情況就是非0,如果前一位為非0,那麼當前這位就需要分兩步做,先假設為0,再假設為非0,即使是人工計算也需要這麼做。

#include

#include

using

namespace std;

typedef

long

long ll;

const

int size =20;

ll sum =

1, ans =0;

int box[size]

, cnt =0;

int vis[size]

;void

dfs(

int index,

int n,

int k)

if(index ==1)

else

else

}return;}

intmain()

if(vis[index - 1] == 0),第一次寫成了cnt - 1

**中一共有3處--cnt,只有第乙個是可以不寫的,下面兩個必須要寫,不然就得不到正確答案,因為cnt的意義就是當前的第cnt位,在dfs過程中是會不斷增加的,某個位置的情況判斷完後,這個位置現在的資訊就應該被丟棄了,取而代之的是下面我們要儲存的資訊,如果不刪除之前的資訊而讓新的資訊向後儲存,那老的資訊就會影響到結果,那結果自然就會出錯了。第乙個可以刪除的原因是,它上面的dfs如果結束以為著這個程式也就該結束了,沒有後續的操作了,當前的資訊刪不刪除無所謂了,但是為了程式意義的完整性,還是加上為好。

題目 1117 K 進製數

考慮包含n位數字的k 進製數.定義乙個數有效,如果其k 進製表示不包含兩連續的0.考慮包含n位數字的k 進製數.定義乙個數有效,如果其k 進製表示不包含兩連續的0.例 1010230 是有效的7位數 1000198 無效 0001235 不是7位數,而是4位數.給定兩個數n和k,要求計算包含n位數字...

問題 1117 K 進製數

考慮包含n位數字的k 進製數.定義乙個數有效,如果其k 進製表示不包含兩連續的0.考慮包含n位數字的k 進製數.定義乙個數有效,如果其k 進製表示不包含兩連續的0.例 1010230 是有效的7位數 1000198 無效 0001235 不是7位數,而是4位數.給定兩個數n和k,要求計算包含n位數字...

藍橋杯(C語言題目)題目 1117 K 進製數

時間限制 1sec 記憶體限制 128mb 考慮包含n位數字的k 進製數.定義乙個數有效,如果其k 進製表示不包含兩連續的0.考慮包含n位數字的k 進製數.定義乙個數有效,如果其k 進製表示不包含兩連續的0.例 1010230 是有效的7位數 1000198 無效 0001235 不是7位數,而是4...