先写自己最先开始的思路

算出一共有多少个三位数,将所有的三位数都装进一个数组里,然后一个一个遍历,如果这个三位数的两倍、三倍都在这个数组里,且三个三位数没有相同的数字,就输出。

第一个函数长这样:

int Jadge1(int number,int a[N])
//判断 number 是否在数组 a 里面
{int n=0;for(int i=0;i<N;i++){if(number==a[i]){n=1;break;}}if(n==1)return 1;elsereturn 0;
}

第二个函数长这样:

int Jadge2(int a,int b,int c)
//判断 a,b,c 三个数是否有相同的数字
{int i1,i2,i3,j1,j2,j3,k1,k2,k3;i1=a/100;i2=b/100;i3=c/100;j1=(a%100)/10;j2=(b%100)/10;j3=(c%100)/10;k1=a%10;k2=b%10;k3=c%10;int num2[9]={i1,i2,i3,j1,j2,j3,k1,k2,k3};//两个 for 循环遍历数组的同时与其他元素进行比较,查找是否有相同元素int count=0;for(int i=0;i<9;i++){for(int j=i+1;j<9;j++){if(num2[i]==num2[j])count++;//查找到相同的计数器加 1}}if(count==0)//没有找到相同的 count=0return 1;elsereturn 0;
}

主函数长这样:

int main()
{//1~9的九个数,随机组成三个三位数,要求形成1:2:3的比例//随机能组成多少数 123 124 125 126 127 128 129 132 134 135 136 137 138 139 142 ...//共有 9*8*7=504 个int num[N];int i,j,k;int n=0;for(i=1;i<10;i++){for(j=1;j<10;j++){if(i!=j){for(k=1;k<10;k++){if(i!=k && j!=k){num[n]=i*100+j*10+k;//所有数装进数组n++;}}}}}//最大的数是987,它的1/3是329,只要遍历到第125个数。for(int m=0;m<125;m++){int m1,m2;m1=2*num[m];m2=3*num[m];int n1=Jadge1(m1,num);//判断两倍是否在数组里int n2=Jadge1(m2,num);//判断三倍是否在数组里int n3=Jadge2(num[m],m1,m2);//判断三个三位数是否有相同数if(n1&&n2&&n3)//如果三个条件都满足,则输出{printf("%d %d %d",num[m],m1,m2);printf("\n");}}
}

所以整个函数长这样:

#include<stdio.h>
#define N 504int Jadge1(int number,int a[N])
//判断 number 是否在数组 a 里面
{int n=0;for(int i=0;i<N;i++){if(number==a[i]){n=1;break;}}if(n==1)return 1;elsereturn 0;
}int Jadge2(int a,int b,int c)
//判断 a,b,c 三个数是否有相同的数字
{int i1,i2,i3,j1,j2,j3,k1,k2,k3;i1=a/100;i2=b/100;i3=c/100;j1=(a%100)/10;j2=(b%100)/10;j3=(c%100)/10;k1=a%10;k2=b%10;k3=c%10;int num2[9]={i1,i2,i3,j1,j2,j3,k1,k2,k3};int count=0;for(int i=0;i<9;i++){for(int j=i+1;j<9;j++){if(num2[i]==num2[j])count++;}}if(count==0)return 1;elsereturn 0;
}int main()
{//1~9的九个数,随机组成三个三位数,要求形成1:2:3的比例//随机能组成多少数 123 124 125 126 127 128 129 132 134 135 136 137 138 139 142 ...//共有 9*8*7=504 个int num[N];int i,j,k;int n=0;for(i=1;i<10;i++){for(j=1;j<10;j++){if(i!=j){for(k=1;k<10;k++){if(i!=k && j!=k){num[n]=i*100+j*10+k;//所有数装进数组n++;}}}}}//最大的数是987,它的1/3是329,只要遍历到第125个数。for(int m=0;m<125;m++){int m1,m2;m1=2*num[m];m2=3*num[m];int n1=Jadge1(m1,num);int n2=Jadge1(m2,num);int n3=Jadge2(num[m],m1,m2);if(n1&&n2&&n3)//判断输出的条件{printf("%d %d %d",num[m],m1,m2);printf("\n");}}
}

后来看了大神解题

直接定义一个数 a,从123遍历到333,并求出它的两倍(b)和三倍(c)。判断 a,b,c 三个三位数没有共同数字的方法,属实让我大吃一惊。

#include<stdio.h>
int main()
{int a,b,c;// a 从123到333for(int a=123;a<333;a++){b=2*a;c=3*a;if(a/100+b/100+c/100+(a%100)/10+(b%100)/10+(c%100)/10+a%10+b%10+c%10==45 && (a/100)*(b/100)*(c/100)*((a%100)/10)*((b%100)/10)*((c%100)/10)*(a%10)*(b%10)*(c%10)==362880)//45是1~9相加的值,362880是1~9相乘的值{printf("%d %d %d\n",a,b,c);}}
}

大佬赐予我力量!

洛谷 P1008三连击 C语言相关推荐

  1. Java 洛谷 P1008 三连击

    题目链接:https://www.luogu.com.cn/problem/P1008 代码实例: public class Main{public static void main(String[] ...

  2. 洛谷 P1008 三连击 题解

    [P1009 普及组] 三连击 题目背景 本题为提交答案题,您可以写程序或手算在本机上算出答案后,直接提交答案文本,也可提交答案生成程序. 题目描述 将 1, 2,...... , 9 共 9 个数分 ...

  3. 洛谷 P1008 三连击 Label:水

    题目描述 将1,2,-,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行,每行3个 ...

  4. 洛谷P1008 三连击

    题目 #include<stdio.h> int main(void) {int a[9]={0,0,0,0,0,0,0,0,0};int num1=0,num2=0,num3=0;for ...

  5. 洛谷 P1008 三连击

    /* 判断没有重复的方法就是 统计1+2+3+4+5+6+7+8+9=45, 1*2*3*4*5*6*7*8*9=362800 */#include <stdio.h>void resul ...

  6. 洛谷 P1008 [NOIP1998 普及组] 三连击

    [题目链接] 洛谷 P1008 [NOIP1998 普及组] 三连击 [题目考点] 1. 枚举 2. 数字拆分 [解题思路] 三个由1~9组成的3位数字,满足1:2:3.那么第一个数字最小为100,最 ...

  7. 洛谷刷题C语言:潇湘の雨、分糖果、Addition、Ljeto、TRI

    记录洛谷刷题C语言QAQ 「PMOI-0」潇湘の雨 题目背景 (原 LZOI-1,改名已经 PMOI 成员同意) lhm-01 题目描述 言琢დ 在一个 2n×2n2n \times 2n2n×2n ...

  8. 洛谷刷题C语言:Bold、饱食、公平の意、DOM、

    记录洛谷刷题C语言qaq [COCI2020-2021#6] Bold 题目描述 Paula 给 Daniel 写了一封信,她需要加粗文本的字体,以便视力恶化的 Daniel 阅读. 信可以用 . 和 ...

  9. 洛谷刷题C语言:陶瓷项链、Cow Gymnastics B、Where Am I? B、Hello, 2020!、SIR 模型

    记录洛谷刷题C语言 一.[NOI2000] 瓷片项链 题目描述 原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链,串的时候沿瓷片的直径方向顺次连接,瓷片之间没有空隙也不重叠,一条项链至少由一个瓷 ...

最新文章

  1. 网易是世界最好的公司
  2. 中秋祝福网页制作_10大中秋H5模板分享,助力吸粉10000+
  3. c语言#include后的尖括号和双引号有什么区别?
  4. Windows保护模式学习笔记(一)—— 段寄存器GDT表
  5. 昆仑mcp文件是什么版本_昆仑健康保2.0升级版怎么样?有哪些优缺点?
  6. 用c语言链表编写便利店零售系统,链表实现多项式求和(C语言)
  7. hibernate07--关联映射
  8. id选择器、标签选择器、类选择器、交集选择器、并集选择器
  9. 来自东软的 OpenStack 负载均衡即服务开源项目
  10. php用于防SQL注入的几个函数
  11. 2020mysql安装教程_2020MySQL安装图文教程
  12. Handler原理分析
  13. 飞舞的蝴蝶(GraphicsView框架)
  14. 可靠的Windows版Redis
  15. 纵坐标是横的还是竖的_600*1200墙砖横贴好,还是竖贴好?讲讲这两种贴法的问题...
  16. ios开发证书reset原理分析以及解决方案
  17. MySQL的主从复制
  18. python中bytearray函数_Python bytearray() 函数
  19. Deep drug-target binding affinity prediction with multiple attention blocks论文解读(二)2021SC@SDUSC
  20. Unity实现可调子屏幕(类小地图)效果

热门文章

  1. obs 推流编码在哪设置_直播软件OBS推流的设置方法
  2. HCIP课堂笔记总结
  3. 如何检索、写作和顺利发表一篇SCI论文?
  4. OPPO R8107线刷刷机包 救砖解锁教程
  5. 高数 | 【一元函数积分学】换元法和分部积分法 使用条件与细节问题
  6. Thinking in Java 中闪耀的星星(四)
  7. 如何快速判断一个文件是否为病毒
  8. 在windows上编译apr库apr-util库
  9. 树莓派 树莓派 编c++_为什么树莓派仍然是教育的白骑士
  10. 学生可以用计算机干什么,好学生用电脑干什么