使用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