zoukankan      html  css  js  c++  java
  • tokitsukaze and Number Game

    题目描述

    tokitsukaze又在玩3ds上的小游戏了,现在她遇到了难关。
    tokitsukaze得到了一个整数x,并被要求使用x的每一位上的数字重新排列,组成一个能被8整除的数,并且这个数尽可能大。
    聪明的你们请帮帮可爱的tokitsukaze,如果无法组成被8整除的数,请输出-1。
    保证输入不含前导0,输出也不能含前导0。

    输入描述:

    第一行包括一个正整数T(T<=1000),表示T组数据。
    接下来T行,每一行包括一个整数x,(0≤x≤10^100)。

    输出描述:

    请输出用这些数字组成出能被8整除的最大的数,如果无法组成出能被8整除的数,请输出-1。
    示例1

    输入

    复制
    2
    666
    1256
    

    输出

    复制
    -1
    6512
    #include <bits/stdc++.h>
    
    using namespace std;
    int T,vis[16];
    int main()
    {
        cin>>T;
        while(T--){
            memset(vis,0,sizeof(vis));
            string cur,ans;
            cin>>cur;
            ans="";
            if(cur.size()==1){
                 int now=cur[0]-'0';
                 if(now%8)cout<<-1<<endl;
                 else cout<<cur<<endl;
                 continue;
            }
            else if(cur.size()==2){
                int u=(cur[0]-'0')*10+cur[1]-'0',v=(cur[1]-'0')*10+cur[0]-'0';
                if(u%8&&v%8)cout<<-1<<endl;
                else if(!(u%8)&&!(v%8))cout<<max(u,v)<<endl;
                else if(u%8)cout<<v<<endl;
                else cout<<u<<endl;
                continue;
            }
            for(int i=0;i<cur.size();i++)vis[cur[i]-'0']++;
            for(int i=0;i<1000;i+=8){
                 int a=i/100,b=i/10%10,c=i%10;
                 vis[a]--,vis[b]--,vis[c]--;
                 string tmp="";
                 if(vis[a]>=0&&vis[b]>=0&&vis[c]>=0){
                      for(int i=9;i>=0;i--){
                           for(int j=vis[i];j;j--){
                               tmp+=i+'0';
                           }
                      }
                      tmp+=a+'0',tmp+=b+'0',tmp+=c+'0';
                      ans=max(tmp,ans);
                 }
                 vis[a]++,vis[b]++,vis[c]++;
            }
            if(ans=="")cout<<-1<<endl;
            else cout<<ans<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Java 集合(静态导入)
    Java 集合 (Collections、Arrays)
    Java 异常
    Java 多态
    Java 继承

    内网服务器配置访问公网
    替换centos的原生yum源为阿里云yum源
    centos7安装杀毒软件ClamAV
    linux程序名称带devel跟不带的区别
  • 原文地址:https://www.cnblogs.com/czy-power/p/10587929.html
Copyright © 2011-2022 走看看