zoukankan      html  css  js  c++  java
  • CodeForces

    题意

    对于一个n位数,进行两次操作,首先将数字的每一位转换为二进制,随后删去最后n个数,最终得到的即为数r
    题目输入数字的位数,要求你给出r最大的最小n位

     

    显然,假若要使得r最大,转换出的二进制数越长越好
    在数字0-9中,转换为2进制数最长的只有8,9

    9-----1001
    8-----1000

    所以最终的结果必定是由9与8组成
    因为我们会删除转换为2进制数的最后n位数,所以对于原n位数转化的二进数,最后n位数转换之前无论是8,或者是9,输出的结果均为一样的

    对于2位数
    99–10011001–输出100110
    98-10011000-输出100110
    对于3位数
    999–100110011001–输出100110011
    998–100110011000–输出100110011

    所以我们只需要输出的最后 n/4个数是8即可

    #include <stdio.h>
    int main(void)
    {
        int n;
        scanf("%d",&n);
        while(n--)
        {
            int t;
            scanf("%d",&t);
            for(int i=0;i<t-((t-1)/4+1);i++)
                printf("9");
            for(int i=0;i<((t-1)/4+1);i++)
                printf("8");
            printf("
    ");
        }
    }
  • 相关阅读:
    ubuntu16.04下笔记本自带摄像头编译运行PTAM
    ar的主流算法
    ubuntu下安装meshlab
    打开.py文件的方法
    Python_ip代理
    对书名的抓取
    JS动态增加删除UL节点LI及相关内容示例
    js遍历json
    js移除某一类的div
    工厂模式
  • 原文地址:https://www.cnblogs.com/iloveysm/p/13442991.html
Copyright © 2011-2022 走看看