洛谷 JAVA 题解 P1618 三连击(升级版)
程序员文章站
2022-07-16 12:18:42
...
package 新手村.BOSS入门练习;
import java.util.Scanner;
public class P1618 {
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)){ //解决不可以重复123456789或缺少问题
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))){//contains可以很好的用来判断
return false;//如果有一个不包含返回false
}
}
return true;
}
}