在 C++ 中找到使 ((n % i) % j) % n 最大化的 (i, j) 對的數量
給定一個數字 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。遍歷 i、j 從 0 到 num,並找到 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 迴圈遍歷 i 和 j 在 [1,num] 範圍內。
如果值 ((num % i) % j) % num 等於 total,則增加計數。
在兩個 for 迴圈結束時,返回計數作為結果。
高效方案
獲取最大余數為 total = num % temp,其中temp 為 num/2+1。現在對於對 (i,j),我們必須選擇 i 為 num 以獲得最大余數。我們可以從 total 到 num 的範圍內選擇 j 以使 total 最大化。因此,對的數量將為num-total。
如果 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;
設定 count=num-total
最後返回計數作為結果。
示例(樸素方案)
#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
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP