首页 > 编程知识 正文

洛谷三连击升级版BOSS战入门综合练习1

时间:2023-05-03 14:47:08 阅读:244896 作者:3143

题目描述 Description

将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成A:B:C的比例,试求出所有满足条件的三个三位数,若无解,输出“No!!!”。  输入输出格式 Input/output 输入格式:
三个数,A B C。
输出格式:
若干行,每行3个数字。按照每行第一个数字升序排列。  输入输出样例 Sample input/output 样例测试点#1 输入样例: 1 2 3 输出样例:  

192 384 576
219 438 657
273 546 819
327 654 981

说明 description 保证A<B<C 思路:从(1~1000/c)循环,然后按比例赋值,每一位数放入一个数组的每一位,判断有多少个数字被用过了,如果有9个(也就是刚好用完),输出即可 提示:记得判断按比例赋值后是否超过了1000,超过了跳出即可 代码如下: 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 int a,b,c,x[9],a1,a2,a3; 6 int y=0,ans=0,flag[10]={0},i,j; //用flag统计数字是否用过 7 cin>>a1>>a2>>a3; //输入 8 for(j=1;j<=1000/a3;j++) 9 { 10 y=0; 11 for(i=0;i<9;i++) 12 flag[i]=0; //全归0 13 a=a1*j; 14 b=a2*j; //按比例赋值 15 c=a3*j; 16 if(a>=1000||b>1000||c>1000) 17 break; //超出范围的情况 18 /*=================================*/19 x[0]=a/100; 20 x[1]=(a/10)%10;21 x[2]=a%10; 22 x[3]=b/100; 23 x[4]=(b/10)%10; //把每一位数放入数组中 24 x[5]=b%10; 25 x[6]=c/100;26 x[7]=(c/10)%10;27 x[8]=c%10; 28 /*=================================*/29 for(i=0;i<9;i++) 30 flag[x[i]-1]=1; //统计用过的数(用过就变成1) 31 for(i=0;i<9;i++) 32 y+=flag[i]; //统计用过多少个 33 if(y==9) //如果y=9的话,就代表所有数都用过,输出 34 { 35 cout<<a<<" "<<b<<" "<<c<<endl; 36 ans++; //有满足的a b c,ans就不等于0 37 } 38 } 39 if(!ans) //没有满足的,输出No!!! 40 cout<<"No!!!"; 41 }

 

转载于:https://www.cnblogs.com/geek-007/p/4417358.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。