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

P1618 三连击(升级版)(字符串,洛谷,java)

程序员文章站 2022-03-24 22:21:29
...

洛谷链接:https://www.luogu.org/problem/P1618

P1618 三连击(升级版)(字符串,洛谷,java)

import java.util.Scanner;

public class Main {
	//sysout   
	//判断三个数是否包含1~9,从而确定是否没有重复数字
	public static boolean pd(String a1,String b1,String c1) {
		String s=a1+b1+c1;
		for(char i='1';i<='9';i++) {
			if(s.contains(String.valueOf(i))==false){  //判断字符串是否包含1~9所有数
				return false;
			}
		}
		return true;
	}
	
	//判断a,b,c是否成m1,m2,m3比例关系
	public static String hj(int a,int b,int c) {
		for(int i=a;i>=2;i--) {  //从a开始往下到a,b,c的第一个最大公约数
			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);
	}
	
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner in=new Scanner(System.in);
        int m1=in.nextInt();
        int m2=in.nextInt();
        int m3=in.nextInt();
        
        //判断是否满足所有条件,输出的标志
        int flag=0;
        
        //三位数
        for(int a=123;a<999;a++) {
        	int b=a/m1*m2;
        	int c=a/m1*m3;
        	
        	//将a,b,c转换为字符串
        	String a1=String.valueOf(a);
        	String b1=String.valueOf(b);
        	String c1=String.valueOf(c);
        	
            //b,c超过三位数或者不满足a<b<c
        	if(b>=999 || c>=999) {break;}
        	if(a>b||a>c||b>c) {break;}
        	
        	//如果包含1~9每个数
        	if(pd(a1,b1,c1)) {
        		if(hj(a,b,c).equals(hj(m1,m2,m3))) {  //如果满足比例
        			flag=1;
        			System.out.println(a+" "+b+" "+c);
        		}
        	}
        }
        //如果不存在该比例的三位数
        if(flag==0) {
        	System.out.println("No!!!");
        }
	}
}
相关标签: 算法题