우리는 정수를 받았고 여기서 의제는 숫자의 자릿수를 반대로 하고 반대 숫자를 원래 숫자에 더하고 결과 숫자가 회문인지 아닌지 확인하는 것입니다. 될 때까지 프로세스가 반복됩니다. 프로세스의 중단점은 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