입력으로 양수를 포함하는 긴 변수가 제공됩니다. 목표는 ASCII 값 숫자가 숫자의 숫자에 있는 알파벳의 개수를 찾는 것입니다.
숫자에서 두 자리 숫자를 선택하고 영어 알파벳의 ASCII 값을 형성하는 방식으로 정렬하십시오. A-Z의 ASCII 값은 65에서 90까지 시작하고 A-z의 ASCII 값은 97에서 122까지 시작합니다.
선택되는 총 숫자는 26+26=52입니다.
예를 들어 이해합시다.
예를 들어
입력 - N_digits =163465
출력 - N의 숫자로 ASCII 값을 구성할 수 있는 알파벳의 개수는 다음과 같습니다. 2
설명 - 163465에 있는 ASCII 값은 65와 66만 있습니다. 따라서 두 개의 알파벳만 가능합니다.
입력 - N_digits =902349
출력 - N의 숫자로 ASCII 값을 구성할 수 있는 알파벳의 개수는 다음과 같습니다. 2
설명 - 902349에 있는 ASCII 값은 90과 99만 있습니다. 따라서 두 개의 알파벳만 가능합니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
이 접근 방식에서 우리는 먼저 입력 숫자에 있는 숫자의 빈도를 저장하기 위한 빈도 배열 total[10]을 만들 것입니다. 이제 65 ~ 90 및 97 ~ 122 범위의 각 숫자 i를 가져옵니다. i의 자릿수를 추출하고 주파수 배열에서 검색합니다. i의 모든 숫자가 주파수 배열에 있는 경우( total[ 현재 숫자]는 모든 숫자에 대해 0이 아님) 카운트를 증가시킵니다.
- long int N_digits를 입력으로 사용합니다.
- 함수 검사(int arr[], int val)는 주파수 배열 arr[] 및 ASCII 숫자 val을 입력으로 사용하고 val이 arr[]의 숫자로 만들어질 수 있는 경우 true를 반환합니다.
- for 루프를 사용하여 주파수 배열의 복사본을 전체로 만듭니다[10].
- 이제 while 루프를 사용하여 val의 각 자릿수를 추출하고 총계[]를 검색합니다.
- total[digit]이 0이면 false를 반환하고, 그렇지 않으면 이를 사용하고 카운트를 1만큼 감소시킵니다.
- 다음 LSB의 값을 줄입니다.
- 만약 while이 완전히 실행되면 total[]의 숫자로 val을 만들 수 있으므로 true를 반환합니다.
- ASCII_N(long long int N_digits) 함수는 입력된 숫자를 받아 N의 숫자로 ASCII 값을 구성할 수 있는 알파벳의 개수를 반환합니다.
- 초기 카운트를 0으로 취하고 주파수 배열 total[10]을 0으로 초기화합니다.
- while 루프를 사용하여 N_digits의 숫자에 대한 주파수 배열을 채웁니다. LSB를 값 =N_digits % 10으로 추출하고 total[값]을 1씩 증가시킵니다.
- N_digits를 10으로 줄입니다.
- 이제 for 루프를 사용하여 97에서 122 및 65에서 90까지의 ASCII 알파벳을 탐색합니다.
- 체크(total, i)가 true를 반환하면 카운트를 증가시킵니다.
- 두 for 루프의 끝에서 결과로 count를 반환합니다.
예
#include<bits/stdc++.h> using namespace std; bool check(int arr[], int val) { int total[10]; for (int i = 0; i < 10; i++) { total[i] = arr[i]; } while (val > 0) { int values = val % 10; if (total[values] == 0) { return false; } else { total[values]--; } val = floor(val / 10); } return true; } int ASCII_N(long long int N_digits) { int count = 0; int total[10] = { 0 }; while (N_digits > 0) { int values = N_digits % 10; total[values]++; N_digits = floor(N_digits / 10); } for (int i = 97; i <= 122; i++) { if (check(total, i)) { count++; } } for (int i = 65; i < 91; i++) { if (check(total, i)) { count++; } } return count; } int main() { long long int N_digits = 251326; cout << "Count of alphabets whose ASCII values can be formed with the digits of N are: " << ASCII_N(N_digits); }
위의 코드를 실행하면 다음과 같은 출력이 생성됩니다 -
출력
Count of alphabets whose ASCII values can be formed with the digits of N are: 2