给定两个整数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