num1과 num2라는 두 개의 정수가 주어지고 작업은 num1을 num2로 나누고 주어진 숫자를 나눌 때 소수점 이하 자릿수를 계산하는 것입니다.
예
Input − num1 = 2, num2 = 5 Output − count is 1
설명 - 2를 5로 나눌 때 즉 ? =0.4이므로 소수점 이하 자릿수는 1이므로 개수는 1입니다.
Input − num1 = 2, num2 = 0 Output − Floating point exception (core dumped)
설명 − 어떤 숫자를 0으로 나누면 오류가 반환되고 프로그램이 비정상적으로 종료됩니다.
Input − num1 = 2, num2 = 3 Output − Infinite
설명 − 2를 3으로 나눌 때, 즉 2/3 =0.666..., 소수점 이하 자릿수는 무한이므로 무한으로 인쇄합니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
num1과 num2라는 두 개의 변수를 입력합니다.
-
소수의 개수를 저장할 변수 count를 생성하고 0으로 초기화
-
unordered_map 유형의 변수 um 생성
-
num1%num2 !=0
동안 루프 시작 -
루프 내에서 num1%num2
로 num1을 설정합니다. -
count 값을 1 증가
-
um.find(num1) !=um.end()인지 확인한 다음 -1을 반환합니다.
-
루프 외부에서 count의 값을 반환합니다.
-
결과를 인쇄하십시오.
예
#include <iostream> #include <unordered_map> using namespace std; int countdigits(int x, int y){ int result = 0; // result variable unordered_map<int, int> mymap; // calculating remainder while (x % y != 0){ x = x % y; result++; if (mymap.find(x) != mymap.end()){ return -1; } mymap[x] = 1; x = x * 10; } return result; } int main(){ int res = countdigits(2, 5); (res == -1)? cout << "count is Infinty" : cout <<"count is "<<res; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다 -
count is 1