범위 [l,r]와 숫자 k가 주어집니다. 목표는 l과 r(l<=number<=r) 사이의 모든 숫자를 찾는 것이므로 (해당 숫자의 역수)-(숫자) 결과가 k의 곱이 되도록 합니다.
l에서 r까지 시작하여 이 조건을 확인하고 각 숫자의 역순을 계산합니다. 이제 역에서 숫자를 빼고 (절대 차이) %k==0인지 확인하십시오. 그렇다면 카운트를 증가시키십시오.
예를 들어 이해합시다.
입력 - L=21, R=25, K=6
출력 − 숫자의 개수 − 2
설명 -
The numbers their reverse and difference is: 21, 12, | 21-12 |=9, 9%6!=0 22, 22, | 22-22 |=0 0%6=0 count=1 23,32, | 32-23 | =9 9%6!=0 24,42, | 42-24 | =18 18%6=0 count=2 25,52, | 52-25 | =27 27%6!=0 Total numbers that meet the condition are 2 ( 22,24 )
입력 - L=11, R=15, K=5
출력 − 숫자의 개수 − 1
설명 -
The only number is 11 , | 11-11 | is 0 and 0%5=0
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
범위를 정의하기 위해 정수 L과 R을 사용합니다. 그리고 K는 나눗셈을 확인합니다.
-
countNumbers(int l, int r, int k) 함수는 l,r 및 k를 입력으로 받아 필요한 조건을 충족하는 숫자의 개수를 반환합니다.
-
초기 카운트를 0으로 합니다.
-
숫자 rev=0을 반대로 하세요.
-
나머지 rem=0을 취합니다.
-
i=l에서 시작하여 i=r.
-
현재 숫자 i를 num에 저장합니다. 그리고 그것의 rev=0.
-
이제 숫자 num을 반대로 합니다. while(num>0). 렘=num%10. rev=rev*10+rem. 숫자=숫자/10.
-
while rev는 i의 반대가 됩니다.
-
rev와 원래 값의 절대 차이 계산 i. 이 차이가 있으면 | i-rev |%k==0. 그런 다음 카운트를 증가시키십시오.
-
범위의 모든 숫자에 대해 이 작업을 수행합니다.
-
count의 최종 값은 역과의 차이가 k의 곱인 숫자로 반환됩니다.
예시
#include <iostream> using namespace std; int countNumbers(int l, int r, int k){ int rev = 0; int count=0; int rem=0; for (int i = l; i <= r; i++){ int num=i; rev=0; while (num > 0){ // reverse the number rem=num%10; rev = rev * 10 + rem; num /= 10; } if((abs(i-rev))%k==0) //original number is i and its reverse is rev { count++; } } return count; } int main(){ int L= 18, R = 24, K = 6; cout <<" Numbers whose difference with reverse is product of k:"<<countNumbers(L,R,K); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Numbers whose difference with reverse is product of k:4