题目描述
一个机器有
m(2<=m<=30)
m
(
2
<=
m
<=
30
)
个灯泡和一个按钮。当按下按钮时,最右侧的电灯发生如下变化:
红色变为绿色;
绿色变为蓝色;
蓝色变为红色、同时左侧电灯的颜色发生一次变化。
输入电灯个数
m
m
和按下按钮的次数,输出电灯的颜色。
题解
水题。如果将红色视为0,绿色视为1,蓝色视为2。则这个机器可以看作一个m位的三进制数。那么该题就转化为,把一个十进制数转化为3进制。
AC代码
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const char cp[3]={'R','G','B'};
int ans[31];
int main(){
int T;
scanf("%d", &T);
while(T--){
int m;
long long n;
scanf("%d", &m);
scanf("%lld", &n);
memset(ans, 0, sizeof(ans));
for(int i = 0; i<m; i++){
ans[m-i-1] = n%3;
n /= 3;
}
for(int i = 0; i<m; i++)
printf("%c",cp[ans[i]]);
printf("\n");
}
}