HDU 5670 Machine
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5670
题目翻译
有一个机器,它有 m 个彩灯和一个按钮。每按下按钮时,最右边的彩灯会发生一次变换。变换为:
1. 如果当前状态为红色,它将变成绿色;
2.如果当前状态为绿色,它将变成蓝色;
3.如果当前状态为蓝色,它将变成红色,并且它左边的彩灯(如果存在)也会发生一次变换。
初始状态下所有的灯都是红色的,询问按下按钮 n 次以后各个彩灯的颜色。
题解
将次数转换为三进制,然后直接输出即可。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
//while(true) RP++; #include<cstdio> using namespace std; const int Maxn=30; long long t; int m; int Ans[Maxn+5]; char x[]={'R','G','B'}; inline void solve(){ scanf("%d%lld",&m,&t); for (int i=0;i<m;i++){ Ans[i]=t%(long long)3; t/=(long long)3; } for (int i=m-1;i>=0;i--) printf("%c",x[Ans[i]]); printf("\n"); } int main(){ int T=0; while(scanf("%d",&T)!=EOF) for (int i=1;i<=T;i++) solve(); return 0; } |

原文链接:HDU 5670 Machine
WNJXYKの博客 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!