Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Суть задачи: найти число, которое, если взять последнюю цифру и переместить в начало будет в два раза меньше получившегося числа. То есть, abcde * 2 = bcdea. Разрядность не ограничена.
- public class Main {
- public static int digits(long number) {
- int count = 0;
- while (number != 0) {
- number /= 10;
- count++;
- }
- return count;
- }
- public static boolean check(long number, boolean debug) {
- if(debug)
- System.out.println("Completed " + number + " numbers");
- long last = number % 10;
- if(last % 10 == 0)
- return false;
- long res = number/10+last*(long)Math.pow(10, digits(number)-1);
- return number*2 == res;
- }
- public static void main(String[] args) {
- for(long i=0;i<Long.MAX_VALUE;i++) {
- boolean c = check(i, i%10000000==0);
- if(c) {
- System.out.println(i);
- break;
- }
- }
- }
- }
Суть задачи: найти число, которое, если взять последнюю цифру и переместить в начало будет в два раза меньше получившегося числа. То есть, abcde * 2 = bcdea
Задача