我们给了两个整数,分别是num1和num2,任务是将num1除以num2,并在将这些给定的数字除以十进制后计算位数。
Input − num1 = 2, num2 = 5Output − count is 1
解释-当我们将2除以5即?= 0.4,因此十进制后的数字为1,因此计数为1。
Input − num1 = 2, num2 = 0Output − Floating point exception (core dumped)
解释-当我们将任何数字除以0时,将返回错误并异常终止程序。
Input − num1 = 2, num2 = 3Output − Infinite
解释-当我们将2除以3即2/3 = 0.666 ...时,十进制后的数字是无限的,因此我们将打印无限。
输入两个变量,比如num1和num2
创建一个变量count以存储十进制数的计数并将其初始化为0
创建unumed_map类型的变量um
num1%num2!= 0时开始循环
在循环内,将num1设置为num1%num2
将count的值增加1
检查um.find(num1)!= um.end()然后返回-1
在循环外,返回计数值。
打印结果。
#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