0
点赞
收藏
分享

微信扫一扫

除法(Division)



​​Division​​


Time Limit:3000MS

 

Memory Limit:Unknown

 

64bit IO Format:%lld & %llu


​​Submit  ​​​​Status​​

Description


​​

除法(Division)_简单枚举

​​

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

. That is,

abcde / fghij =N

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​​ 


6162 0


​​Sample Output​​ 


There are no solutions for 61.79546 / 01283 = 62 94736 / 01528 = 62

【分析】

       枚举abcde,然后通过N算出fghij,最后判断是否所有数字不相同(统计0到9的个数,如果个数均为1,说明所有数字均不相同)。

用java语言编写程序,代码如下:


import java.io.BufferedInputStream;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(new BufferedInputStream(System.in));
boolean first = true;
while(input.hasNext()) {
int n = input.nextInt();
if(n == 0)
break;

if(first)
first = !first;
else
System.out.println();

boolean hasResult = false;
for(int i = 123; i <= 98765; i++) {
if(i % n == 0) {
int m = i / n;
if(count(i, m)) {
hasResult = true;

System.out.printf("%05d / %05d = " + n + "\n", i, m);
}
}
}

if(!hasResult)
System.out.println("There are no solutions for " + n + ".");
}
}

public static boolean count(int n, int m) {
int[] count = new int[10];
for(int i = 0; i < 5; i++) {
count[n % 10]++;
count[m % 10]++;

if(count[n % 10] > 1 || count[m % 10] > 1)
return false;

n = n / 10;
m = m / 10;
}

for(int i = 0; i < 10; i++) {
if(count[i] != 1)
return false;
}
return true;
}
}






举报

相关推荐

0 条评论