🌕🌗🌑🌑🌑
# 題目連結
- 題目連結
- Online Judge
- uDebug
# 題目說明
Time limit: 3.000 seconds
# 題目
Write a program that finds and displays all pairs of 5-digit numbers that between them use the digits 0
through 9
once each, such that the first number divided by the second is equal to an integer N, where 2 ≤ N ≤ 79
. That is,
where each letter represents a different digit. The first digit of one of the numerals is allowed to be zero.
# Input
Each line of the input file consists of a valid integer N
. An input of zero is to terminate the program.
# Output
Your program have to display ALL qualifying pairs of numerals, sorted by increasing numerator (and, of course, denominator).
Your output should be in the following general form:
xxxxx / xxxxx = N
xxxxx / xxxxx = N
.
.
In case there are no pairs of numerals satisfying the condition, you must write ‘There are no solutions for N
.’. Separate the output for two different values of N
by a blank line.
# Sample Input
61
62
0
# Sample Output
There are no solutions for 61.
79546 / 01283 = 62
94736 / 01528 = 62
# 解題技巧
# Solution
import java.util.*; | |
public class Main{ | |
public static void main(String[] args) { | |
Scanner sc = new Scanner(System.in); | |
int N = sc.nextInt(); | |
String sortNum = " /0123456789"; | |
while(N != 0){ | |
ArrayList<String> ans = new ArrayList<>(); | |
for(int i = 98765; i >= 1234; ){ | |
if(i % N == 0){ | |
int num = i / N; | |
String str = i + " / " + (num < 10000 ? "0" + num : num); | |
char[] c = str.toCharArray(); | |
Arrays.sort(c); | |
String temp = new String(c); | |
if(temp.equals(sortNum)){ | |
ans.add(str); | |
} | |
i = i - N; | |
}else{ | |
i--; | |
} | |
} | |
if(ans.size() == 0){ | |
System.out.println("There are no solutions for " + N + "."); | |
}else{ | |
for(int i = ans.size() - 1; i >= 0; i--){ | |
System.out.println(ans.get(i) + " = " + N); | |
} | |
} | |
N = sc.nextInt(); | |
if(N != 0){ | |
System.out.println(""); | |
} | |
} | |
sc.close(); | |
} | |
} |
單字
** **
!! !!
片語 & 搭配詞
!! !!