P1618 三连击(升级版)(字符串,洛谷,java)
程序员文章站
2022-03-24 22:21:29
...
洛谷链接:https://www.luogu.org/problem/P1618
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!!!");
}
}
}
上一篇: 旋转的辐射Logo