P1618 三连击(升级版)(JAVA语言)
题目描述
将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
//又是一道水题
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int m1=in.nextInt();
int m2=in.nextInt();
int m3=in.nextInt();
int f=0;
for(int a=123;a<999;a++){
int b=a/m1*m2;
int c=a/m1*m3;
if(b>=999||c>=999)break;
String a1=String.valueOf(a);
String b1=String.valueOf(b);
String c1=String.valueOf(c);
if(a>b||a>c||b>c)break;
if(pd(a1,b1,c1)){
if(hj(a,b,c).equals(hj(m1,m2,m3))){
f=1;
System.out.println(a+" "+b+" "+c);
}
}
}
if(f==0){
System.out.println("No!!!");
}
}
private static String hj(int a, int b, int c) {
// TODO Auto-generated method stub
for(int i=a;i>=2;i--){
if(a%i==0&&b%i==0&&c%i==0){
a=a/i;
b=b/i;
c=c/i;
}
}
return String.valueOf(a)+String.valueOf(b)+String.valueOf(c);
}
private static boolean pd(String a1, String b1, String c1) {
// TODO Auto-generated method stub
String s=a1+b1+c1;
for(char i='1';i<='9';i++){
if(s.contains(String.valueOf(i))==false){
return false;
}
}
return true;
}
}