• 周日. 11月 27th, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

暑假集训Day15 L (枚举)

admin

11月 28, 2021

题目链接在这里: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 }
未来是什么样,未来会发生什么,谁也不知道。
但是我知道,
起码从今天开始努力,
肯定比从明天开始努力,
要快一天实现梦想。
千里之行,始于足下! ——《那年那兔那些事儿》

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注