неділя, 1 листопада 2015 р.

7111

Теруски

Стародавні народи, зазвичай, записували числа за допомогою букв.
Так, у римській системі використовувались 7 букв: CDILMV та X, що дозволяло їм записувати числа від 1 до 3999.
Їх сусіди - теруски, також викорисовували сім букв: AEIJOU та Y, але їм вдавалось зображати числа від 1 до 5040. Кожне число записується у вигляді рядка довжиною сім символів, у которому кожна з букв використовується рівно один раз. Список усіх рядків упорядковується за алфавітом, а число, що подається, дорівнює місцю у цому списку. Так, AEIJOUY = 1AEIJOYU = 2AEIJUOY = 3, аYUOJIEA = 5040.
Напишіть програму, яка визначає, як теруски записували задане число.
Вхідні дані
Програма отримує на вхід натуральне число Х від 1 до 5040.
Вихідні дані
Рядок з семи символів – зображення числа Х у терусків.
import java.util.Scanner; public class Main { private static int n; public static void main(String[] args) { n = new Scanner(System.in).nextInt(); permutation("AEIJOUY"); } public static void permutation(String str) { permutation("", str); } private static void permutation(String prefix, String str) { int l = str.length(); if(l == 0) { if(--n == 0) { System.out.println(prefix); System.exit(0); } } else { for (int i=0; i<l; i++) permutation(prefix + str.charAt(i), str.substring(0, i) + str.substring(i+1)); } } }

Немає коментарів:

Дописати коментар