สมมติว่าเรามีตัวเลขสามจำนวน n, m และ z สำนักงานรับสายทุก n นาที และมีของส่งมาทุก m นาที สำนักงานเปิด z นาที ต้องนับจำนวนออเดอร์ขั้นต่ำที่เก็บได้ เพื่อไม่มีออเดอร์ค้างเมื่อลูกค้าติดต่อ สมมติการรับออเดอร์และพูดคุยใช้เวลา 1 นาทีพอดี
เช่น ถ้าอินพุตคือ n = 1; m = 2; z = 5 เอาต์พุตจะเป็น 2 เพราะต้องเก็บออเดอร์ที่มาในนาทีที่ 2 และ 4
ขั้นตอนการแก้ปัญหา
return z / ((n * m) / (gcd ของ n และ m))
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int solve(int n, int m, int z) {
return z / ((n * m) / __gcd(n, m));
}
int main() {
int n = 1;
int m = 2;
int z = 5;
cout << solve(n, m, z) << endl;
}
อินพุต
1, 2, 5
เอาต์พุต
2