zoukankan      html  css  js  c++  java
  • Codeforces Round #278 (Div. 2)

    A

    给出一个数a, b为一个正数,如果a+b含有8,则称为吉祥的数字,找出最小的b

    枚举b就可以了-

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring>  
     4 #include<algorithm>  
     5 using namespace std;
     6 
     7 int num[10]={1000000000,100000000,10000000,1000000,100000,10000,1000,100,10};
     8 
     9 int judge(long long x)
    10 {
    11     if(x<0)  x=-x;
    12     
    13     if(x/num[0]==8||x/num[1]%10==8||x/num[2]%10==8||x/num[3]%10==8||x/num[4]%10==8||x/num[5]%10==8||x/num[6]%10==8||x/num[7]%10==8||x/num[8]%10==8||x%10==8)
    14     return 1;
    15     return 0;
    16 }
    17 int main()
    18 {
    19     long long a,x,y,i;
    20     int flag=1;
    21     cin>>a;
    22     for(i=1;i<=1000000000;i++)
    23     {
    24         x=a+i;
    25         if(judge(x)||judge(y))
    26         {
    27             flag=1;
    28             break;
    29         }
    30         
    31     }
    32     if(flag) printf("%I64d
    ",i);
    33     else printf("-1
    ");
    34 }
    View Code

     B

    现在给出n(0<=n<=4),a1,a2,--,an, 判断该盒子是否满足上述关系,如果满足,输出其余盒子的值

    由上面的关系可以算出 a1+a4=a2+a3; a4=3*a1;

    又因为题目里面说了给出的盒子的值不一定是他们的顺序,所以枚举可能地顺序,依次判断是否满足关系

      1 #include<iostream>  
      2 #include<cstdio>  
      3 #include<cstring>  
      4 #include<algorithm>  
      5 using namespace std;
      6 
      7 int a[15],b[15];
      8 int judge()
      9 {
     10     int x=a[1]+a[4]-a[2]-a[3];
     11     int y=a[4]/a[1];
     12     if(x==0&&y==3) return 1;
     13     return 0;
     14 }
     15 int check()
     16 {
     17     if(a[4]-a[3]>=0&&a[3]-a[2]>=0&&a[2]-a[1]>=0) return 1;
     18     return 0;
     19 }
     20 
     21 int main()
     22 {
     23     int i,j,n,x,y,z,flag=1;
     24     scanf("%d",&n);
     25     if(n==0)
     26     {
     27      printf("YES
    ");
     28      printf("1
    1
    3
    3
    ");    
     29     }
     30     if(n==1)
     31     {
     32         scanf("%d",&x);
     33         printf("YES
    ");
     34         printf("%d
    %d
    %d
    ",x,3*x,3*x);
     35         
     36     }
     37     if(n==2)
     38     {
     39         scanf("%d %d",&x,&y);int c=min(x,y);int d=max(x,y);
     40         x=c;y=d;
     41         for(i=1;i<=6;i++)
     42         {
     43             if(i==1)
     44             {
     45                 a[1]=x;a[2]=y;a[3]=4*x-y;a[4]=3*x;
     46             //    printf("i=%d
    ",i);
     47                 if(judge()&&check()) {printf("YES
    ");printf("%d
    %d
    ",a[3],a[4]);flag=1;;break;}
     48                 else {flag=0;}
     49             }
     50             if(i==2)
     51             {
     52                 a[1]=x;a[3]=y;a[2]=4*x-y;a[4]=3*x;
     53             //    printf("i=%d
    ",i);
     54                 if(judge()&&check()) {printf("YES
    ");printf("%d
    %d
    ",a[2],a[4]);flag=1;;break;}
     55                 else flag=0;
     56             }
     57             if(i==3)
     58             {
     59                 a[1]=x;a[4]=y;
     60             //    printf("i=%d
    ",i);
     61                 for(j=x;j<=y;j++)
     62                 {
     63                     a[2]=j;a[3]=x+y-j;
     64                     if(judge()&&check()) {printf("YES
    ");printf("%d
    %d
    ",a[2],a[3]);flag=1;break;}
     65                     else flag=0;
     66                 }                
     67             }
     68             if(i==4)
     69             {
     70                 a[2]=x;a[3]=y;
     71             //    printf("i=%d
    ",i);
     72                 for(j=1;j<=x;j++)
     73                 {
     74                     a[1]=j;a[4]=3*a[1];
     75                     if(judge()&&check()) {printf("YES
    ");printf("%d
    %d
    ",a[1],a[4]);flag=1;break;}
     76                     else flag=0;
     77                     
     78                 }
     79             }
     80             if(i==5)
     81             {
     82                 a[2]=x;a[4]=y;a[1]=y/3;a[3]=a[1]+a[4]-a[2];
     83             //    printf("-----------");
     84             //    printf("i=%d
    ",i);
     85                 if(judge()&&check()) {printf("YES
    ");printf("%d
    %d
    ",a[1],a[3]);flag=1;break;}
     86                 else flag=0;
     87             }
     88             if(i==6)
     89             {
     90                 a[3]=x;a[4]=y;a[1]=y/3;a[2]=a[1]+a[4]-a[3];
     91             //    printf("i=%d
    ",i);
     92             //    printf("flag=%d
    ",flag);
     93                 if(judge()&&check()) {printf("YES
    ");printf("%d %d
    ",a[1],a[2]);flag=1;break;}
     94                 else flag=0;
     95             }                        
     96         }
     97         if(flag==0) {
     98                 printf("NO
    ");
     99             }        
    100     }
    101     if(n==3)
    102     {
    103         scanf("%d %d %d",&b[1],&b[2],&b[3]);sort(b+1,b+4);
    104         for(i=1;i<=4;i++)
    105         {
    106             if(i==1)
    107             {
    108                 a[1]=b[1];a[2]=b[2];a[3]=b[3];a[4]=3*a[1];
    109             //    printf("i=%d
    ",i);
    110                 if(judge()&&check()) {printf("YES
    ");printf("%d
    ",a[4]);flag=1;break;}
    111                 else flag=0;
    112             }
    113             if(i==2)
    114             {
    115                 a[1]=b[1];a[2]=b[2];a[4]=b[3];a[3]=a[1]+a[4]-a[2];
    116             //    printf("i=%d
    ",i);
    117                 if(judge()&&check()) {printf("YES
    ");printf("%d
    ",a[3]);flag=1;break;}
    118                 else flag=0;            
    119             }
    120             if(i==3)
    121             {
    122                 a[1]=b[1];a[3]=b[2];a[4]=b[3];a[2]=a[1]+a[4]-a[3];
    123                 if(judge()&&check()) {printf("YES
    ");printf("%d
    ",a[2]);flag=1;break;}
    124                 else flag=0;                
    125             }
    126             if(i==4)
    127             {
    128                 a[2]=b[1];a[3]=b[2];a[4]=b[3];a[1]=b[3]/3;
    129                 if(judge()&&check()) {printf("YES
    ");printf("%d
    ",a[1]);flag=1;break;}
    130                 else flag=0;
    131             }
    132             
    133         }
    134             if(flag==0) {
    135                 printf("NO
    ");
    136             }    
    137     }
    138     if(n==4)
    139     {
    140         scanf("%d %d %d %d",&a[1],&a[2],&a[3],&a[4]);
    141         sort(a+1,a+5);
    142         if(judge()&&check()) printf("YES
    ");
    143         else printf("NO
    ");
    144     }
    145     return 0;
    146 }
    View Code

    话说这一题= =是既写得挫= =还改得久= =啊 啊 啊

  • 相关阅读:
    poj 2892 && 3468
    hdu 2444
    反素数
    poj 2406 && 1961
    Java定时器Timer的使用
    Linux环境下如何生成core文件
    Java异步CompletableFuture的使用
    Java中线程池的使用
    Linux系统添加应用服务进程的守护进程
    C++通过Webbrowser调用JavaScript
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4302914.html
Copyright © 2011-2022 走看看