zoukankan      html  css  js  c++  java
  • P1618 三连击(升级版)

    https://www.luogu.com.cn/problem/P1618

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int a, b, c;
     4 int dic[10];  //用于判断是否1-9每个数都出现过 
     5 bool check1(int n){    //检查各位数上是否有0 或 任意两位相等 
     6     int ge, shi, bai;
     7     ge=n%10;  shi=n/10%10;  bai=n/100;
     8     return ge!=shi && ge!=bai && shi!=bai && ge!=0 && shi!=0 && bai!=0;
     9 }
    10 bool check2(int x, int y, int z){   //检查x, y, z各位数上是否有相同数字
    11     memset(dic, 0, sizeof(dic));    //将数组dic初始化为0,假定都没有出现 
    12     dic[x/100]=1; dic[x/10%10]=1; dic[x%10]=1;  //将出现的数字值赋值为1 
    13     dic[y/100]=1; dic[y/10%10]=1; dic[y%10]=1;
    14     dic[z/100]=1; dic[z/10%10]=1; dic[z%10]=1;
    15     
    16     for(int i=1; i<10; i++){  //通过循环来判断1-9是否没有出现 
    17         if(dic[i]==0)return 0;
    18     }
    19     return 1;
    20 }
    21 int main()
    22 {
    23     bool f=1;//假定结果为“No!!!” 
    24     cin>>a>>b>>c;
    25     for(int x=100; x<1000; x++){
    26         if(!check1(x))continue;   //检查x各位数上是否有0 或 任意两位相等  
    27         int y=b*x/a;              //通过a:b=x:y计算y的结果 
    28         if(!check1(y))continue;   //检查y各位数上是否有0 或 任意两位相等
    29         int z=c*x/a;              //通过a:c=x:z计算z的结果
    30         if(!check1(z))continue;   //检查z各位数上是否有0 或 任意两位相等
    31         if(c*y!=b*z)continue;     //检查b:c==y:z;
    32         if(check2(x, y, z)){      //检查x, y, z各位数上是否有相同数字,见check2函数 
    33             cout<<x<<" "<<y<<" "<<z<<endl;
    34             f=0;
    35         }
    36     }
    37     if(f)  //特判答案为 "No!!!"的情况 
    38         cout<<"No!!!";
    39     return 0;
    40 } 

    切勿跟上一题一样,一位一位去暴力,或3位3位去暴力!尤其要注意根据题意排除没有必要的枚举!

  • 相关阅读:
    粘性固定 position:sticky
    vue组件样式scoped
    vue组件结构
    vue根据路由判断所在的内容
    配置系统变量
    div中放入一个img元素导致div高度会多出几个像素
    button标签设置line-height问题
    Netty学习——protoc的新手使用流程
    Netty学习——Google Protobuf的初步了解
    Netty学习——Google Protobuf使用方式分析和环境搭建
  • 原文地址:https://www.cnblogs.com/tflsnoi/p/13300141.html
Copyright © 2011-2022 走看看