使用C++分發所有問題的郵件最小數量。
問題陳述
給定測試中的N個問題和班級中的K個學生。在K個學生中,N個學生每個都記住了一個問題。一封郵件最多可以包含X個問題。
找到使整個班級瞭解所有問題的郵件最小數量。
如果N = 3,K = 3,X = 1,則需要傳送6封郵件:
- 學生1將其問題傳送給學生2和學生3(2封郵件),
- 學生2和學生3也這樣做,所以郵件總數 = 2 * 3 = 6
演算法
最終答案可以使用以下公式計算:
ceil(N/X) * (K-N) + (( ceil((N-1)/X)) * (N-1)) + (N-1)
示例
#include <iostream>
#include <cmath>
using namespace std;
int minMailsToBeSent(int n, int k, int x){
int m = (n - 1) + ceil((n - 1) * 1.0 / x) * (n - 1) + ceil(n * 1.0 / x) * (k- n);
return m;
}
int main(){
int questions = 3;
int students = 3;
int X = 1;
cout << "No of mails to be sent: " << minMailsToBeSent(questions, students, X) << endl;
return 0;
}輸出
編譯並執行上述程式時,它會生成以下輸出:
No of mails to be sent: 6
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP