zoukankan      html  css  js  c++  java
  • BestCoder Round #81 (div.2)1001

    Machine

    Accepts: 580
    Submissions: 1890
    Time Limit: 2000/1000 MS (Java/Others)
    Memory Limit: 65536/65536 K (Java/Others)
    Problem Description

    There is a machine with m(2≤m≤30)m (2leq mleq 30)m(2m30) coloured bulbs and a button.When the button is pushed, the rightmost bulb changes. For any changed bulb,

    if it is red now it will be green;

    if it is green now it will be blue;

    if it is blue now it will be red and the bulb that on the left(if it exists) will change too.

    Initally all the bulbs are red. What colour are the bulbs after the button be pushed n(1≤n<263)n (1leq n< {2}^{63})n(1n<263​​) times?

    Input

    There are multiple test cases. The first line of input contains an integer T(1≤T≤15)T (1leq Tleq 15)T(1T15) indicating the number of test cases. For each test case:

    The only line contains two integers m(2≤m≤30)m (2leq mleq 30)m(2m30) and n(1≤n<263)n (1leq n< {2}^{63})n(1n<263​​).

    Output

    For each test case, output the colour of m bulbs from left to right. R indicates red. G indicates green. B indicates blue.

    Sample Input
    2
    3 1
    2 3
    Sample Output
    RRG
    GR
    题目大意:
    就是有一排灯泡,初始时每一个灯泡的颜色都是红色,同时有一个Button,每点一次,就会时最右边的灯泡的颜色都会发生变化,
    变化规则为R->G->B->R,周而复始进行循环,但是当灯泡是从B->R时,它左边的灯泡的颜色也会相应的发生变化。
    思路分析:好久没敲代码了,手生的不行,被这么一道水题坑了半天,首先是输入的时候,n的范围很大,应该用lld或者I64d进行
    输入,另外n值这么大,我竟然第一想法是模拟一遍,orz,超时了,每一个灯泡的最终颜色只与n%3的余数有关,这样进行判断无疑是
    最省时间的。
    代码:
    #include <iostream>
    #include <stack>
    #include <cstdio>
    #include <cstring>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    const int maxn=35;
    char bulb[maxn];
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            __int64  m,n;
            scanf("%I64d%I64d",&m,&n);
            memset(bulb,'R',sizeof(bulb));
           for(int i=0;i<m;i++)
           {
               if(n==0) break;
                   if(n%3==0) bulb[i]='R';
                   if(n%3==1) bulb[i]='G';
                   if(n%3==2) bulb[i]='B';
                   n/=3;
           }
         for(int i=m-1;i>=0;i--)
           printf("%c",bulb[i]);
           printf(" ");
        }
        return 0;
    }
  • 相关阅读:
    软件工程2019:第3次作业—— 团队项目阶段一: 项目需求分析
    软件工程2019:第2次作业—— 时事点评
    第1次作业—— 自我介绍 + 软工五问(热身运动)
    软工作业(4)用户体验分析:以 “师路南通网站” 为例
    软工作业(3):用户体验分析
    软工作业: (2)硬币游戏—— 代码分析与改进
    《软件工程导论》读后感想与疑惑
    软工作业(1)
    用户体验分析:以 “师路南通网站” 为例
    用户体验分析: 以 “南通大学教务管理系统微信公众号” 为例
  • 原文地址:https://www.cnblogs.com/xuejianye/p/5424846.html
Copyright © 2011-2022 走看看