Добрый день, дорогой читатель! Сегодня в транспорте я получил счастливый билет. Вам знакомо с детства это чувство торжества и ликования, когда сумма первых трех цифр равна сумме последних трех. Кто-то съедал их, а кто-то — разрывал на мелкие части, но желание загадывали все.Но а мы сегодня напишем простую программу для подсчета количества счастливых билетов, и найдем вероятность получения счастливого билета.
Рисунок 1. Счастливый билет
Алгоритм простой. Сначала заполним массив из 1000000 строк строками от 000000 до 999999. Далее будем преобразовывать каждую строку данного массива в массив символов (6 символов). Преобразуем тип Char в Int. Найдем первую сумму, сравним со второй. Если равны, то увеличить счетчик. Перейти к следующей строке первого массива. По завершении — вывод счетчика.
Eclipse подсчитал 55252 счастливых билета на одну билетную ленту. Т.к. всего в ней 1000000 билетов, то вероятность получения счастливого билета = 55252/1000000 = 0.055252.
Кстати, если вы житель Петербурга, то «бюро сладкой архитектуры Rubiscookies обменивает бумажные «счастливые билетики» на сладкие: шоколадные или карамельные, оригинального размера или формата альбомного листа.» Согласитесь, это гораздо приятнее и вкуснее!
Спасибо, что прочли статью до конца! Удачи!
Рисунок 1. Счастливый билет
Алгоритм простой. Сначала заполним массив из 1000000 строк строками от 000000 до 999999. Далее будем преобразовывать каждую строку данного массива в массив символов (6 символов). Преобразуем тип Char в Int. Найдем первую сумму, сравним со второй. Если равны, то увеличить счетчик. Перейти к следующей строке первого массива. По завершении — вывод счетчика.
Код для Java Eclipse.
package happynumber;
public class Happynumbercounter {
public static void main(String[] args) {
String[] array = new String[1000000];
// для чисел 0-9 5 значащих нулей впереди
String s1 = "00000";
// для чисел 10-99 4 значащих нуля впереди
String s2 = "0000";
// для чисел 100-999 3 значащих нуля впереди
String s3 = "000";
// для чисел 1000-9999 2 значащих нуля впереди
String s4 = "00";
// для чисел 10000-99999 1 значащий нуль впереди
String s5 = "0";
// для чисел 100000-999999 нет значащих нулей впереди
// счетчик
int counter = 0;
for (int i = 0; i < 10; i++) {
array[i] = s1 + i;
}
for (int i = 10; i < 100; i++) {
array[i] = s2 + i;
}
for (int i = 100; i < 1000; i++) {
array[i] = s3 + i;
}
for (int i = 1000; i < 10000; i++) {
array[i] = s4 + i;
}
for (int i = 10000; i < 100000; i++) {
array[i] = s5 + i;
}
for (int i = 100000; i < 1000000; i++) {
array[i] = Integer.toString(i);
}
// если сумма первых трех цифр равна сумме последних трех - то увеличить счетчик
// на 1
for (int i = 0; i < 1000000; i++) {
char chararr[] = array[i].toCharArray();
if ((Integer.parseInt(String.valueOf(chararr[0])) + Integer.parseInt(String.valueOf(chararr[1]))
+ Integer.parseInt(String.valueOf(chararr[2]))) == (Integer.parseInt(String.valueOf(chararr[3]))
+ Integer.parseInt(String.valueOf(chararr[4]))
+ Integer.parseInt(String.valueOf(chararr[5])))) {
counter = counter + 1;
}
}
// вывести значение счетчика
System.out.print(counter);
}
}
Eclipse подсчитал 55252 счастливых билета на одну билетную ленту. Т.к. всего в ней 1000000 билетов, то вероятность получения счастливого билета = 55252/1000000 = 0.055252.
Вероятность получения счастливого билета = 55252/1000000 = 0.055252
Кстати, если вы житель Петербурга, то «бюро сладкой архитектуры Rubiscookies обменивает бумажные «счастливые билетики» на сладкие: шоколадные или карамельные, оригинального размера или формата альбомного листа.» Согласитесь, это гораздо приятнее и вкуснее!
Спасибо, что прочли статью до конца! Удачи!