欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

洛谷 JAVA 题解 P1618 三连击(升级版)

程序员文章站 2022-07-16 12:18:42
...

洛谷 JAVA 题解 P1618 三连击(升级版)

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;
    }
}