zoukankan      html  css  js  c++  java
  • P1618 三连击(升级版)

    题目描述

    将 1, 2,ldots, 91,2,,9 共 99 个数分成三组,分别组成三个三位数,且使这三个三位数的比例是 A:B:CA:B:C,试求出所有满足条件的三个三位数,若无解,输出 No!!!

    //感谢黄小U饮品完善题意

    输入格式

    三个数,A,B,CA,B,C。

    输出格式

    若干行,每行 33 个数字。按照每行第一个数字升序排列。

    输入输出样例

    输入 #1
    1 2 3
    输出 #1
    192 384 576
    219 438 657
    273 546 819
    327 654 981

    说明/提示

    保证 A<B<C

    题解:

      三重循环,第一重找第一个,第二重找第二个...

      因为从1-9找出3个3位数且数字不重复,那个也就是说3个三位数共9个数字是1-9

      第一重循环:因为都是三位数,第一个数最小,则为100,又要不重复,10几不行(有0),11几不行(有两个1)

            所以最小得是123,把第一重数字转为字符串,判断各个字符间是否相等和是否有字符为0,若都不满足

            进入第二重循环

      第二重循环:从213开始,因为第一重已经把“1”占了,所以第二重最小得“2”开头,之后同样跟第一重判断,看字符间是否相等和是否有0

            若都不满足在次判断  j / i == B / A 不? 注意,i 和 j 都是int 类型,要强转成float 在进行运算,满足后进入第三重

      第三重循环:从312开始,理由同上;  将第一重字符串x,第一重字符串y,第一重字符串z相加,先将相加结果字符串转成char数组,

            再将数组进行排序,之后再转换成string,这样就可以进行字符串比较了。用equal方法。

            之后只需要判断比例是否一样就行了。

      有一个问题是:如果没有结果怎么判断?这时候就定义一个计数器number,如果有值,number+1,在最终判断number的值是否为0

              得到解果。

    就今天的题解详细,自我感觉是由于前几次写的代码的确好懂吧

      

    import java.util.Arrays;
    import java.util.Scanner;
    public class Main {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            float A = scanner.nextInt();
            float B = scanner.nextInt();
            float C = scanner.nextInt();
            int number = 0;
            if (A >B || A>C||B>C || A==0){
                System.out.println("No!!!");
                return;
            }
            for (int i = 123; i <= 329; i++) {
                String x = String.valueOf(i);
                if ((x.charAt(0) == x.charAt(1)) || (x.charAt(0) == x.charAt(2))
                    || (x.charAt(1) == x.charAt(2)) || x.contains("0")){
                    continue;
                }else {
                    for (int j = 213; j < 659; j++) {
                       String y = String.valueOf(j);
                        if ((y.charAt(0) == y.charAt(1)) || (y.charAt(0) == y.charAt(2))
                                || (y.charAt(1) == y.charAt(2))|| y.contains("0") ){
                            continue;
                        }else if (((float) j/(float) i == B/A)){
                            for (int k = 312; k <=987; k++) {
                                String z = String.valueOf(k);
                                String str = x+y+z;
                                char [] stri = new char[9];
                                stri = str.toCharArray();
                                Arrays.sort(stri);
    
                                str = String.valueOf(stri);
    
                                if (!str.equals("123456789")){
                                    continue;
                                }else if (((float) j/(float) i == B/A)&&((float) k/(float) i == C/A)){
                                    System.out.println(i+" "+j+" "+k);
                                    number++;
                                }
                            }
                        }
                    }
                }
            }
            if (number == 0){
                System.out.println("No!!!");
            }
        }
    }

     

  • 相关阅读:
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
    第 6 章 Cinder
  • 原文地址:https://www.cnblogs.com/qzhc/p/12327755.html
Copyright © 2011-2022 走看看