友情链接 Doge博客 gunpowder博客 东北小蟹蟹博客

[1008] 三连击 & [1618] 三连击 (升级版)

应该比较好懂吧....用了大量define
#include<stdio.h>
#define G1(A)  A/1%10 /* 取个位数 */
#define G2(A)  A/10%10 /* 取百位数 */
#define G3(A)  A/100%10 /* 取千位数 */
#define DouBuDeng(A)  ((G1(A)!=G2(A))&&(G1(A)!=G3(A))&&(G2(A)!=G3(A)))
/* 判断数字自身是否有重复 */
#define BuHanChongFu(A,B) ((G1(A)!=G1(B))&&(G1(A)!=G2(B))&&(G1(A)!=G3(B))&&(G2(A)!=G1(B))&&(G2(A)!=G2(B))&&(G2(A)!=G3(B))&&(G3(A)!=G1(B))&&(G3(A)!=G2(B))&&(G3(A)!=G3(B)))
/* 判断一个数字是否和另一个数字有重复 */
int main(){
for(int b=100;b<1000;b++){
if((DouBuDeng(b)&&DouBuDeng(b*2)&&DouBuDeng(b*3))&&BuHanChongFu(b,b*2)&&BuHanChongFu(b,b*3)&&BuHanChongFu(b*2,b*3))
(BuHanChongFu(b,0)&&BuHanChongFu(b*2,0)&&BuHanChongFu(b*3,0))?printf("%d %d %d\n",b,b*2,b*3):1;
}
/* 过滤掉结果含0的数字 */
}
#include<stdio.h>
#include<stdbool.h>
#define G1(A)  A/1%10 /* 取个位数 */
#define G2(A)  A/10%10 /* 取百位数 */
#define G3(A)  A/100%10 /* 取千位数 */
#define DouBuDeng(A)  ((G1(A)!=G2(A))&&(G1(A)!=G3(A))&&(G2(A)!=G3(A)))
/* 判断数字自身是否有重复 */
#define BuHanChongFu(A,B) ((G1(A)!=G1(B))&&(G1(A)!=G2(B))&&(G1(A)!=G3(B))&&(G2(A)!=G1(B))&&(G2(A)!=G2(B))&&(G2(A)!=G3(B))&&(G3(A)!=G1(B))&&(G3(A)!=G2(B))&&(G3(A)!=G3(B)))
/* 判断一个数字是否和另一个数字有重复 */
int main(){
int z,x,c;
bool IsPrinted=false,k=false;
scanf("%d %d %d",&z,&x,&c);
for(int b=0;b<333;b++){
if((DouBuDeng(b*z)&&DouBuDeng(b*x)&&DouBuDeng(b*c))&&BuHanChongFu(b,b*x)&&BuHanChongFu(b,b*c)&&BuHanChongFu(b*x,b*c)){
(BuHanChongFu(b*z ,0)&&BuHanChongFu(b*x,0)&&BuHanChongFu(b*c,0))?printf("%d %d %d\n",b*z,b*x,b*c),IsPrinted=true,k=true:1;
}
else
IsPrinted=false;
/* 过滤掉结果含0的数字 */
}
if(!IsPrinted&&!k)
printf("No!!!");
}

posted @ 2020-10-05 09:54  Ruptpsych  阅读(143)  评论(0编辑  收藏  举报