第九屆藍橋盃國賽 調手錶

2021-09-23 07:47:46 字數 1336 閱讀 1559

小明買了塊高階大氣上檔次的電子手錶,他正準備調時間呢。

在 m78 星雲,時間的計量單位和地球上不同,m78 星雲的乙個小時有 n 分鐘。

大家都知道,手錶只有乙個按鈕可以把當前的數加一。

在調分鐘的時候,如果當前顯示的數是 0 ,那麼按一下按鈕就會變成 1,再按一次變成 2 。如果當前的數是 n - 1,按一次後會變成 0 。

作為強迫症患者,小明一定要把手錶的時間調對。

如果手錶上的時間比當前時間多1,則要按 n - 1 次加一按鈕才能調回正確時間。

小明想,如果手錶可以再新增乙個按鈕,表示把當前的數加 k 該多好啊……

他想知道,如果有了這個 +k 按鈕,按照最優策略按鍵,

從任意乙個分鐘數調到另外任意乙個分鐘數最多要按多少次。

注意,按 +k 按鈕時,如果加k後數字超過n-1,則會對n取模。

比如,n=10, k=6 的時候,假設當前時間是0,連按2次 +k 按鈕,則調為2。

「輸入格式」

一行兩個整數 n, k ,意義如題。

「輸出格式」

一行乙個整數

表示:按照最優策略按鍵,從乙個時間調到另乙個時間最多要按多少次。

「樣例輸入」

5 3「樣例輸出」

2「樣例解釋」

如果時間正確則按0次。否則要按的次數和操作系列之間的關係如下:

1:+1

2:+1, +1

3:+3

4:+3, +1

「資料範圍」

對於 30% 的資料 0 < k < n <= 5

對於 60% 的資料 0 < k < n <= 100

對於 100% 的資料 0 < k < n <= 100000

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

#include using namespace std;

int main() , n, k;

int max = 0;

cin >> n >> k;

for (int i = 1; i < n; i++)

cout << max;

return 0;

}

第九屆藍橋杯(國賽) 調手錶

問題描述 小明買了塊高階大氣上檔次的電子手錶,他正準備調時間呢。在 m78 星雲,時間的計量單位和地球上不同,m78 星雲的乙個小時有 n 分鐘。大家都知道,手錶只有乙個按鈕可以把當前的數加一。在調分鐘的時候,如果當前顯示的數是 0 那麼按一下按鈕就會變成 1,再按一次變成 2 如果是 n 1,那麼...

藍橋杯第九屆國賽B組 第四題 調手錶

小明買了塊高階大氣上檔次的電子手錶,他正準備調時間呢。在 m78 星雲,時間的計量單位和地球上不同,m78 星雲的乙個小時有 n 分鐘。大家都知道,手錶只有乙個按鈕可以把當前的數加一。在調分鐘的時候,如果當前顯示的數是 0 那麼按一下按鈕就會變成 1,再按一次變成 2 如果當前的數是 n 1,按一次...

第九屆藍橋盃國賽參賽體會

第一題,74,嗯,水題,做錯了,看成了一塊的是兩塊的10倍。第二題,暴力跑一分半,或者找一下規律,沒錯,就是斐波那契數列。第三題,格雷碼,樹狀陣列,我都沒學過這個東西,我用了幾個三目運算子,後來大大佬說這樣會錯,不滿足n 5的情況,emmmm。第四題,複雜度o n 我o n 2 emmmm,我怎麼這...