【暴力枚举】P1618 三连击(升级版)

写这道题前可以先完成普通版然后再完成升级版

题意:

将1-9这九个数分为三组,形成比例为形成A:B:C(而且A<B<C),求出所有满足条件的三个三位数,要无解就输出No!!!

解题思路:

题目很简单,但却有隐藏条件,一不小心就WA。
最简单的方式就是把所有数都试一遍,如果符合了就输出,最后如果没有一个符合的就输出No!!!。
那么就需要知道限制条件是那些。
1.三个三位数的组成是从1-9中选,每个数只能出现一次
通过String的contains()方法判断1-9是否唯一,length()确保长度为9
2.三个三位数形成的比例可能为小数(最后一个测试点)
通过求出A:B:C的比值后再进行循环判断操作

package LOQ.暴力枚举;

import java.util.Scanner;

/**
 * @Author Lunau
 * @Create 2022-10-03 17:16
 * @Description
 * @Result
 */
public class P1618三连击升级版_2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //A:B:C
        double t1 = sc.nextInt();
        double t2 = sc.nextInt();
        double t3 = sc.nextInt();
        double b,c;
        //计数器
        int count = 0;
        for(double a = 123;a<=329;a++) {
            //求出比值,可能为小数
            b = a * (t2/t1);
            c = a * (t3/t1);
            if (judge(a,b,c)) {
                System.out.println((int)a+" "+(int)b+" "+(int)c);
                count++;
            }
        }
        if (count==0) {
            System.out.println("No!!!");
        }
    }
    public static Boolean judge(double a,double b,double c) {
        String str = ""+(int)a+(int)b+(int)c;
        if (str.contains("1")&&str.contains("2")&&str.contains("3")&&str.contains("4")
                &&str.contains("5")&&str.contains("6")&&str.contains("7")&&str.contains("8")&&str.contains("9")
        &&str.length()==9) {
            return true;
        }
        return false;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值