欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

三连击(升级版)

发布时间:2025/3/21 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 三连击(升级版) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

题目描述

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。

//感谢黄小U饮品完善题意

输入输出格式

输入格式:

三个数,A B C。

输出格式:

若干行,每行3个数字。按照每行第一个数字升序排列。

输入输出样例

输入样例#1:
1 2 3 输出样例#1:
192 384 576 219 438 657 273 546 819 327 654 981

说明

保证A<B<C

代码实现:

1 #include<cstdio> 2 int a,b,c; 3 bool v[10],w[10],p; 4 bool pd(int x){ 5 while(x){ 6 if(w[x%10]) return 1; 7 w[x%10]=1;x/=10; 8 } 9 } 10 void find(int x){ 11 if(x>100){ 12 for(int i=1;i<10;i++) w[i]=0; 13 int y=x*b/a,z=x*c/a; 14 if(pd(x)||pd(y)||pd(z)) return; 15 printf("%d %d %d\n",x,y,z);p=1; 16 } 17 for(int i=1;i<=9;i++) if(!v[i]){v[i]=1;find(x*10+i);v[i]=0;} 18 } 19 int main(){ 20 scanf("%d%d%d",&a,&b,&c); 21 find(0); 22 if(!p) printf("No!!!\n"); 23 return 0; 24 }

一开始没注意到要输出”No!!!“,结果60,呵呵。

题目来源:洛谷

转载于:https://www.cnblogs.com/J-william/p/6286113.html

总结

以上是生活随笔为你收集整理的三连击(升级版)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。