• 暑假集训Day15 L (枚举)


    题目链接在这里:Problem - L - Codeforces

    很显然只用看后两位就行了,我们要让后两位尽量的小并且能被4整除,注意只用看最后两位能被4整除就行了,因为只是两个数,我们对这两个数进行枚举,让这两个数都尽量的小才能保证最后的最大值(把大的数都往前摆)这样的话枚举就应该i从1~9,j从1~i

    最后前导零的判断要注意,当0的数量多余1个并且没有其他数的时候如果按照上面的办法会出现前导零。

     1 #include "bits/stdc++.h"
     2 using namespace std;
     3 const int MAX=1e6;
     4 int n,t,a[15];
     5 bool flag;
     6 int main(){
     7     freopen ("l.in","r",stdin);
     8     freopen ("l.out","w",stdout);
     9     int i,j,zt,x,y;
    10     scanf("%d",&t);
    11     n=10;
    12     while (t--){
    13         for (i=0;i<n;i++) scanf("%d",a+i);
    14         if (a[0]>=2){
    15             j=1;
    16             while (a[j]==0 && j<10) j++;
    17             if (j==10){
    18                 printf("0
    ");
    19                 continue;
    20             }
    21         }
    22         if (a[0]>=2){
    23             for (i=9;i>=0;i--) for (j=1;j<=a[i];j++) putchar(i+'0');
    24             putchar('
    ');continue;
    25         }
    26         flag=false;
    27         for (i=1;i<=9;i++)
    28             for (j=0;j<=i;j++){
    29                 if ((i*10+j)%4!=0 && (j*10+i)%4!=0) continue;
    30                 if (!a[i] || !a[j]) continue;
    31                 if (i==j && a[i]<=1) continue;
    32                 if ((i*10+j)%4==0){
    33                     x=i,y=j;
    34                     flag=true;
    35             //cout<<x<<' '<<y<<endl;
    36                     goto away;
    37                 }
    38                 else{
    39                     x=j,y=i;
    40                     flag=true;
    41             //cout<<x<<' '<<y<<endl;
    42                     goto away;
    43                 }
    44             }
    45         away:if (flag){
    46             a[x]--,a[y]--;
    47             for (i=9;i>=0;i--) for (j=1;j<=a[i];j++) putchar(i+'0');
    48             printf("%d%d
    ",x,y);
    49             continue;
    50         }
    51         if (a[8]) {printf("8
    ");continue;}
    52         if (a[4]) {printf("4
    ");continue;}
    53         if (a[0]) {printf("0
    ");continue;}
    54         printf("-1
    ");
    55     }
    56     return 0;
    57 }
    未来是什么样,未来会发生什么,谁也不知道。 但是我知道, 起码从今天开始努力, 肯定比从明天开始努力, 要快一天实现梦想。 千里之行,始于足下! ——《那年那兔那些事儿》
  • 相关阅读:
    Base64原理与实现
    Oracle中rownum用法警示
    实例游戏内存修改器----CUI版本模拟
    Win32进程创建、进程快照、进程终止用例
    pThreads线程(三) 线程同步--条件变量
    pThreads线程(二) 线程同步--互斥量/锁
    pThreads线程(一) 基本API
    VS调试快捷键
    运行程序报“应用程序配置不正确”或者缺少运行库造成程序不可移植的问题
    C++模拟键盘消息
  • 原文地址:https://www.cnblogs.com/keximeiruguo/p/15077690.html
Copyright © 2020-2023  润新知