计算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

猜你喜欢