历届试题 带分数

/*
历届试题 带分数

问题描述

100 可以表示为带分数的形式:100 = 3 + 69258 / 714。

还可以表示为:100 = 82 + 3546 / 197。

注意特征:带分数中,数字1~9分别出现且只出现一次(不包含0)。

类似这样的带分数,100 有 11 种表示法。
输入格式

从标准输入读入一个正整数N (N<1000*1000)
输出格式

程序输出该数字用数码1~9不重复不遗漏地组成带分数表示的全部种数。

注意:不要求输出每个表示,只统计有多少表示法!
样例输入1
100
样例输出1
11
样例输入2
105
样例输出2
6

*/
import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.close();
        int count = 0;
        for (int i = 1; i < n; i++) {
            if (!check(i + ""))
                continue;
            for (int j = 1; j < 3500; j++) {
                int b = j * (n - i);
                String s = "" + b + j + i;
                if (s.length() != 9 || !check(s))
                    continue;
                count++;
            }
        }
        System.out.println(count);
    }

    static boolean check(String s) {
        char a[] = s.toCharArray();
        for (int i = 0; i < a.length - 1; i++)
            for (int j = i + 1; j < a.length; j++)
                if (a[j] == '0' || a[i] == a[j])
                    return false;
        return true;
    }
}

 

posted @ 2018-03-22 14:45  忧伤的小毛驴  阅读(255)  评论(0编辑  收藏  举报