杭電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,也是會轉...