给我们一个数字num作为输入。目的是找到形式(i,j)的对数,以使((num%i)%j)%num最大化并且i和j都在[1,num]范围内。
让我们用例子来理解
输入-num = 4
输出-使得((n%i)%j)%n最大化的(i,j)对的计数为-3
说明-对将是:(3,2),(3,3),(3,4)
输入-num = 6
输出-使得((n%i)%j)%n最大化的(i,j)对的计数为-4
说明-对将是:(4,3,(4,4),(4,5),(4,6)
我们将使用两种方法解决此问题。在幼稚的方法中,如果我们将num作为其一半,则可以获得最大余数。设置temp = num / 2 +1。将最大余数设置为total = num%temp。从0到num遍历i,j并找到i,j使得(((num%i)%j)%num == total。
将输入num作为整数。
函数maximized_pair(int num)取num并返回(i,j)对的计数,以使((n%i)%j)%n最大化。
将初始计数设为0。
将num减半以得到最大余数。设置temp =((num / 2)+1)。
计算最大余数为total = num%temp;
对于(i,j)对。使用两个for循环遍历[1,num]中的i和j。
如果值(((num%i)%j)%num等于总数,则递增计数。
在两个for循环的末尾,返回计数作为结果。
获得最大余数为total = num%temp,其中temp是num / 2 + 1。现在,对于对(i,j),我们必须选择i作为num以获得最大余数。我们可以从总数到num的范围内选择j,以使总数成为最大值。因此,对数将为numtotal。
在num = 2的情况下,返回4作为对,将是(1,1),(1,2),(2,1),(2,2),并且不会使用num-total进行计算。
将输入num作为整数。
函数maximized_pair(int num)取num并返回(i,j)对的计数,以使((n%i)%j)%n最大化。
将初始计数设为0。
如果num == 2,则返回4。
否则将num减半以得到最大余数。设置temp =((num / 2)+1)。
计算最大余数为total = num%temp;
设置计数=总数
最后返回结果。
#include<bits/stdc++.h> using namespace std; int maximized_pair(int num){ int count = 0; int temp = ((num / 2) + 1); int total = num % temp; for (int i = 1; i <= num; i++){ for (int j = 1; j <= num; j++){ int check = ((num % i) % j) % num; if (check == total){ count++; } } } return count; } int main(){ int num = 10; cout<<"Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: "<<maximized_pair(num); }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: 6
#include<bits/stdc++.h> using namespace std; int maximized_pair(int num){ int count = 0; if (num == 2){ return 4; } else{ int temp = ((num / 2) + 1); int total = num % temp; count = num - total; } return count; } int main(){ int num = 10; cout<<"Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: "<<maximized_pair(num); }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Count of pairs of (i, j) such that ((n % i) % j) % n is maximized are: 6