Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 역함수 및 추가 기능


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