计算范围内的数字,以使其中的数字及其乘以q的乘积在C ++中不相等

给定两个数字,开始和结束作为范围变量,整数q作为输入。目的是找到一个范围内的数字,以使该数字及其乘积为q的数字不具有公共数字。

如果数字是5,q是3,则乘积将是15。5和15都有一个公共数字5。

如果数字是2,q是5,则乘积将是10。2和10都没有公共数字。

让我们通过示例来理解。

例如

输入-  开始= 5,结束= 10,q = 2

输出-范围内的数字计数,以使其中的数字及其乘以q的乘积不等于:5

说明-数字将是:

  • 5(5 * 2 = 10)

  • 6(6 * 2 = 12)

  • 7(7 * 2 = 14)

  • 8(8 * 2 = 16)

  • 9(9 * 2 = 18)

输入-  开始= 20,结束= 25,q = 5

输出-范围内的数字计数,以使其中的数字与q的乘积不相等是:2

说明-数字将是:

  • 22(22 * 5 = 110) 

  • 23(23 * 5 = 115)

以下程序中使用的方法如下

在这种方法中,我们将从头到尾遍历并将每个数字及其与q的乘积转换为字符串。现在创建一个数组arr [26],它将存储当前数字的字符数。现在遍历乘积字符串(当前数* q),如果该字符串中的任何字符在arr []中具有非零值,则很常见,因此返回0。否则返回1。

  • 取范围变量和值q。

  • 函数check(int i, int q)采用数字i和q,如果i和q的数字不相等或不通用,则返回1。

  • 使用str =将i转换为字符串to_string(i)。

  • 使用str_2 =将乘积(temp = q * i)转换为字符串to_string(temp)。

  • 取频率数组arr [26] = {0}来计算str的字符数。

  • 使用for循环遍历str并使用arr [str [j]-'0'] ++更新频率。

  • 使用for循环遍历str_2并检查arr [str_2 [j]-'0']是否为非零,如果为arr,则返回其公用。返回0。

  • 否则返回1。

  • 函数unequal(int start, int end, int q)接受范围变量和q并返回范围内的数字计数,以使其中的数字与q的乘积不相等。

  • 将初始计数设为0。

  • 使用for循环从i-start到i = end遍历数字。

  • 使用check(i, q)数字i及其带q的乘积来查找没有共同的数字。如果是,则增加计数。

  • 最后返回结果作为计数。

示例

#include <bits/stdc++.h>
using namespace std;

int check(int i, int q) {
   string str = to_string(i);
   int length = str.size();
   int arr[26] = {
      0
   };

   int temp = i * q;
   string str_2 = to_string(temp);
   int length_2 = str_2.size();
   for (int j = 0; j < length; j++) {
      arr[str[j] - '0']++;
   }
   for (int j = 0; j < length_2; j++) {
      if (arr[str_2[j] - '0']) {
         return 0;
      }
   }
   return 1;
}

int unequal(int start, int end, int q) {
   int count = 0;

   for (int i = start; i <= end; i++) {
      if (check(i, q)) {
         count++;
      }
   }
   return count;
}
int main() {
   int start = 20, end = 40, q = 4;
   cout << "Count of numbers in range such that digits in it and it's product with q are unequal are: " << unequal(start, end, q);
   return 0;
}

如果我们运行上面的代码,它将生成以下输出-

输出结果

Count of numbers in range such that digits in it and it's product with q are unequal are: 1

猜你喜欢