计算X的所有可能值,以使C ++中的A%X = B

给定两个整数A和B以及一个数字X。目标是找到X可以具有的值计数,以便A%X = B。对于上述公式,如果A == B,则X的无穷大是可能的,因此返回-1。如果A <B,则没有解,因此返回0。如果A> B,则返回结果(AB)的除数。

例如

输入值

A=5, B=2
输出结果
Count of all possible values of X such that A % X = B are: 1

说明

5%3=2. So X is 3 here.

输入值

A=10, B=10
输出结果
Count of all possible values of X such that A % X = B are: −1

说明

Here A==B so there are infinite solutions so −1 is returned.

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

在这种方法中,我们将使用for循环从i = 1到i * i <=(AB)计算(AB)的除数。如果有任何一个i除以(AB),则相应地更新计数。

  • 以整数A和B作为输入。

  • 如果A <B,则打印0。

  • 如果A == B,则打印-1作为结果。

  • 对于A> B,函数 possible_values(int A, int B) 取A和B并返回X的所有可能值的计数,以使A%X =B。

  • 取初始计数为0且X = AB。

  • 使用for循环从i = 1到i * i <(AB)进行遍历,以计算X的除数。

  • 如果有任何i完全除以X,则取temp = i,temp_2 = B-1,如果i * i!= X,则设定temp_2 = X / i。

  • 如果temp> B且temp_2> B,则增加计数。

  • 在循环结束时,返回计数为结果。

示例

#include <bits/stdc++.h>

using namespace std;

int possible_values(int A, int B){

   int count = 0;

   int X = A − B;

   for (int i = 1; i * i <= A − B; i++){

      if(X % i == 0){

         int temp = i;

         int temp_2 = B − 1;

         if(i * i != X){

            temp_2 = X / i;

         }

         if(temp > B){

            count++;

         }

         if(temp_2 > B){

            count++;

         }

      }

   }

   return count;

}

int main(){

   int A = 15, B = 5;

   if(A < B){

      cout<<"Count of all possible values of X such that A % X = B are: "<<0;

   }

   else if(A == B){

      cout<<"Count of all possible values of X such that A % X = B are: "<<−1;

   }

   else{

      cout<<"Count of all possible values of X such that A % X = B are: "<<possible_values(A, B);

   }

   return 0;

}

输出结果

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

Count of all possible values of X such that A % X = B are: 1

以上是 计算X的所有可能值,以使C ++中的A%X = B 的全部内容, 来源链接: utcz.com/z/315853.html

回到顶部