有一个机器,它有 m (2\leq m\leq 30)m(2≤m≤30) 个彩灯和一个按钮。每按下按钮时,最右边的彩灯会发生一次变换。变换为: 1. 如果当前状态为红色,它将变成绿色; 2.如果当前状态为绿色,它将变成蓝色; 3.如果当前状态为蓝色,它将变成红色,并且它左边的彩灯(如果存在)也会发生一次变换。 初始状态下所有的灯都是红色的。 询问按下按钮 n (1\leq n< {2}^{63})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< {2}^{63})n(1≤n<2​63​​) 。
输出描述
对于每组数据,输出一个长度为mm的字符串,表示从左到右mm个彩灯的颜色。 R代表红色;G代表绿色;B代表蓝色。
输入样例
2
3 1
2 3
输出样例
RRG
GR

红、绿、蓝分别表示0、1、2,每次操作就相当于+1,原问题就转化为求n的三进制

表示的最低的m位,即求 n mod 3^m3​​​的三进制表示。

复杂度 O(m)O(m)

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 typedef long long LL;
 6 int main()
 7 {
 8     int m ,t;
 9     LL n;
10     scanf("%d", &t);
11     int color[50];
12     while (t--)
13     {
14         memset(color, 0, sizeof(color));
15         scanf("%d%I64d", &m, &n);
16         int cnt = m;
17         while (n > 0 && m > 0)
18         {
19             color[m--] = n % 3;
20             n = n / 3;
21         }
22         for (int i = 1; i <= cnt; i++)
23         {
24             if (color[i] == 0)
25                 printf("R");
26             else if(color[i] == 1)
27                 printf("G");
28             else if (color[i] == 2)
29                 printf("B");
30         }
31         printf("\n");
32     }
33     return 0;
34 }

View Code

转载于:https://www.cnblogs.com/zhaopAC/p/5428058.html

HDU5670Machine(抽象进制)相关推荐

  1. 进制转换(完成Python14作业的背景补充)

    来源于小甲鱼进制转换视频 数的认识 数,是一个无形的.抽象的概念,它是人类用来表示数量的一个智力的产物 "一百"是一个抽象概念,用到计数书本有几页就会变成具体的.有形的概念 我们要 ...

  2. 【★】假如人类使用16进制

    十进制一直是我心中过不去的一道坎.. 人类社会使用十进制已经几十万年的历史了,追根到底它源于远古智人的手指计数:当十只手指记不下时就会找其他记号标记一个"十",接着从1开始再次用手 ...

  3. 16进制的两位数转换不了 matlab_【大学生计算机基础】进制那些问题。小数或整数转换,各种进制间转换.........

    方便自己期末复习备考而准备(作为一名纯文科生,我对计算机课真的很抓狂.只好认认真真自个探究,整理些笔记.如果你也需要可以借鉴借鉴) ①进制? 嗯~这我觉得就不用多做解释了,大家都是上个计算机课的人,老 ...

  4. java 8进制串转中文_为什么不能用中文进行编程?而英文就可以

    前些天大雄无意间听见 几个线下班小伙伴说 真的是无(te)意(di)的 "我要补英文" "对,英文真的很重要" "如果编码用中文就好了" . ...

  5. java 16进制_JAVA十六进制数据接收与传输

    由于项目中经常遇到与设备进行交互获取数据,不仅有Python版本.还有Java版本,还可能会有C#版本,在此做个记录. 一.十六进制转换工具类 主要包含十六进制字符串转ASCII,ASCII转十六进制 ...

  6. JAVA基础——关键字与保留字——标识符——进制转换

    本节学习目录 前言 一.JAVA的关键字和保留字 1.什么是Java关键字? 2.什么是Java保留字? 二.JAVA标识符及命名规则 1.标识符 2.命名规则 三.进制的转换 1.何为进制? (1) ...

  7. 三进制 四进制计算机原理,基因编码为何选择了“四进制”,而不是计算机系统的“二进制”?...

    计算机已经成功的证明,"二进制"是一种简洁又高效的编码方案(且与物理硬件相得益彰),它可以传递和映射任意复杂度的信息. 但基因编码,绝大部分却使用了4种碱基(DNA是ATCG,RN ...

  8. C++控制不同进制输出(二进制,八进制,十进制,十六进制)各种进制之间的转换

    目录 1.输出(头文件讲解) 2.格式控制 常用的I/O流控制符 4.各种进制之间的转换(进制大乱斗) 4.1.写在前面 4.2整体框架搭建 4.3菜单函数 4.4用户输入选择(main函数体中) 4 ...

  9. 关键字的使用限制 数字之间的进制转换 java如何注释

    2.1 关键字 关键字是指被高级编程语言赋予特殊含义的一些单词,关键字一般都是由小写字母组成.好比是汉 语当中的一些专有名词:北京,天安门,兵马俑.不能乱用. 用于定义数据类型的关键字:byte sh ...

最新文章

  1. 2022-2028年中国盲盒产业研究及前瞻分析报告
  2. 【经验】提高github的下载(克隆)速度
  3. R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值)
  4. matlab-高数 find 找到集合中特定元素的位置
  5. python爬虫源码附注解_Python小白写的三个入门级的爬虫(附代码和注释)
  6. pstack命令学习
  7. 【C语言进阶深度学习记录】三十三 C语言中动态内存分配
  8. 我最讨厌哪种数据分析师?这四点全中就可以辞职走人了
  9. 跟我一起考PMP---项目成本管理
  10. 带左右箭头的图片轮播
  11. Apple自动化利器AppleScript
  12. 策略路由 本地策略+接口策略
  13. 新人如何利用今日头条自媒体平台赚钱?月收入轻松过万
  14. 使用 maven-semantic-release 实现自动化发版
  15. 腾讯优测-优社区干货精选 | android开发在路上:少去踩坑,多走捷径(上)
  16. php求价格最低,php-将Woo-commerce变体销售价格调至低于实际价格
  17. Windows2000高级技巧
  18. 三角兽首席科学家分享实录:基于对抗学习的生成式对话模型
  19. 数据结构中的问题与typedef
  20. c语言体重指数怎么算_107股票信息网,股票涨3个点怎么算,股市行情今日大盘上证指数走势图...

热门文章

  1. php mysql数据库 指南_用 PHP 创建 MySQL 数据库
  2. unc0ver 发布新版本支持 iOS 13.3 越狱
  3. NSString 使用方法总结
  4. android判断和创建快捷方式(4.03测试通过)
  5. Keil4编译原子哥的SYSTEM出现错误 Inline assembler not permitted when generating Thumb code
  6. “真三”中的人生哲理
  7. 共享智能指针编程实验
  8. 安装scipy报错,疑似缺少wheel包,解决方案
  9. Centos7中yum安装jdk及配置环境变量
  10. phpmyadmin 无法载入 mysql 扩展_phpMyAdmin“无法载入mysql扩展,请检查PHP配置”解决方法...