題目轉為進製化來做

2021-07-11 09:29:05 字數 1677 閱讀 5086

杭電5670machine
有乙個機器,它有 m (2\leq m\leq 30)m(2≤m≤30) 個彩燈和乙個按鈕。每按下按鈕時,最右邊的彩燈會發生一次變換。變換為:

如果當前狀態為紅色,它將變成綠色;

2.如果當前狀態為綠色,它將變成藍色;

3.如果當前狀態為藍色,它將變成紅色,並且它左邊的彩燈(如果存在)也會發生一次變換。

初始狀態下所有的燈都是紅色的。

詢問按下按鈕 n (1\leq n< ^)n(1≤n<2

​63

​​ ) 次以後各個彩燈的顏色。

輸入描述

輸入包含多組資料. 第一行有乙個整數t (1\leq t\leq 15)t(1≤t≤15), 表示測試資料的組數. 對於每組資料:

唯一的一行包含2個整數 m (2\leq m\leq 30)m(2≤m≤30) 和 n (1\leq n< ^)n(1≤n<2

​63

​​ ) 。

輸出描述

對於每組資料,輸出乙個長度為mm的字串,表示從左到右mm個彩燈的顏色。

r代表紅色;g代表綠色;b代表藍色。

輸入樣例

2 3 1

2 3

輸出樣例

rrg

gr我只想說被坑了。一道水題然而被題目坑了,可能也是自己想多了。題目的左邊,一直以為是他的左邊所有的燈,然而真正的意圖是左邊的乙個。知道題目意思了後,其實是一道水題了,一下子就可以找到規律吧。

初始化r==0;g==1;b==2;

第m個燈的狀態就是三次一迴圈,則可以是n%3;

第m-1個燈的狀態就是n%3^2%3^2====n/3,之後再%3;

之後的就可以變成了乙個迴圈。

for(i = m; i >= 1; i--)
然而發這個部落格的主要原因不是這個。而是聽了別人說這題的做法後,發現思維真的很奇特,要學習學習所以發這篇部落格,還是先看看他們的方法把。轉化為3進製,剛開始聽到3進製的時候,頓時間超無語的,怎麼與三進製有關啊。我也是頓時進無語了了。後來聽了解釋之後,頓時間驚呆了,這跟我那找規律完全不是乙個檔次噠。

轉化為3進製,其實前面已經有點矛頭了,初始化r==0;g==1;b==2;

0,1,2不就是3進製的基數嗎?並且他那種變化,不知道你們注意沒,是不是進製,對的,就是進製。是不是很簡單了。

無語了,

for(i = 1; i

<= n; i++)

}

然而只是超時**,突然間還是沒有轉過來啊。其實這個答案就是n轉化為3進製的結果,還注意一下那個最後還要取摸一下就ok了。

碼上學姐的**,真心不想打了。

#include

#include

#include

#include

#include

using

namespace

std;

char s=;

int main()

n %= mul;

while(n)

for(i=1;i<=m-rel;i++)

cout

<<"r";

for(i=rel-1;i>=0;i--)

cout

0;}

C 轉為2進製 8進製 16進製制

include include define n 8 void tobin int n,int dec void tobin2 int n,int dec intmain 看乙個例子 6轉2進製 6 2 0 6 2 3 非0 可以繼續算 3 2 1 3 2 1 非0 可以繼續算 1 2 1 1 2 ...

進製轉換問題 例如把26進製轉為10進製

問題 a z表示0 25,代表26進製,現在要求把該26進製轉為10進製 例如 輸入 ba 輸出 26 它可以表示為 2 10 3 0 10 2 3 10 1 9 10 0 那麼任何進製的數都一樣,例如16進製制數8a30e 它就是8 16 4 10 16 3 3 16 2 0 16 1 14 16...

ios文字轉為16進製制

nsstring str 0xff055008 先以16為引數告訴strtoul字串引數表示16進製制數字,然後使用0x x轉為數字型別 unsigned long red strtoul str utf8string 0 16 strtoul如果傳入的字元開頭是 0x 那麼第三個引數是0,也是會轉...