우리는 정수를 받았고 여기서 의제는 숫자의 자릿수를 반대로 하고 반대 숫자를 원래 숫자에 더하고 결과 숫자가 회문인지 아닌지 확인하는 것입니다. 될 때까지 프로세스가 반복됩니다. 프로세스의 중단점은 1000회 반복이고 최대 long 값(Long.MAX_VALUE)보다 큰 값입니다.
예시
입력 − 1678
출력 − 주어진 입력의 회문 1678 293392
설명 − 입력된 번호를 먼저 역순으로 한 후 원래 번호에 추가한 다음 회문이 아닌 경우 회문을 확인하고 업데이트된 번호에 대해 동일한 과정을 반복합니다. 프로세스의 중단점은 1000회 반복이고 최대 long 값(Long.MAX_VALUE)보다 큰 값입니다.
입력 − 202021038
출력 − 주어진 입력의 회문 202021038 1453553541
설명 − 입력된 번호를 먼저 역순으로 한 후 원래 번호에 추가한 다음 회문이 아닌 경우 회문을 확인하고 업데이트된 번호에 대해 동일한 과정을 반복합니다. 프로세스의 중단점은 1000회 반복이고 최대 long 값(Long.MAX_VALUE)보다 큰 값입니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
주요 기능 내부
-
입력 번호는 calculateReverseandAdd(input) 메소드에서 전달됩니다.
-
-
computeReverseandAdd
메소드 내부-
새로운 변수 rev_number가 도입되었습니다.
-
루프는 조건 번호 <=max
로 반복됩니다. -
루프 내에서 reverseNumber() 메서드를 통해 숫자를 전달하여 숫자의 역방향을 얻습니다.
-
반전된 숫자가 입력된 숫자에 추가됩니다.
-
그런 다음 checkPalindrome() 메서드에 숫자를 전달하여 얻은 숫자에서 회문을 확인합니다. , 그렇다면 숫자가 사용자에게 출력으로 인쇄됩니다.
-
숫자가 회문이 아닌 경우 회문이 얻어질 때까지 얻은 숫자로 동일한 프로세스를 반복합니다. 결과 숫자가 최대 길이 값보다 크면 가능한 회문이 주어진 숫자의 범위에 존재하지 않습니다.
-
예시
import java.util.*; public class ReverseAdd{ static final long max = Long.MAX_VALUE; static long reverseNumber(long number){ long rev_number = 0; while (number > 0){ rev_number = rev_number * 10 + number % 10; number = number / 10; } return rev_number; } static boolean checkPalindrome(long number){ return (reverseNumber(number) == number); } static void calculateReverseandAdd(long number){ long rev_number = 0; System.out.println("Palindrome of the given input " + number); while (number <= max){ rev_number = reverseNumber(number); number = number + rev_number; if (checkPalindrome(number)){ System.out.println(number); break; } else if (number > max){ System.out.println("No possible palindromes for the input"); } } } public static void main(String[] args){ calculateReverseandAdd(1678); calculateReverseandAdd(2961); calculateReverseandAdd(202021038); } }
출력
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.
Palindrome of the given input 1678 293392 Palindrome of the given input 2961 69696 Palindrome of the given input 202021038 1453553541