Cho một mảng số tiền đầu tư bởi nhiều người và một mảng khác chứa khoảng thời gian đầu tư tương ứng của từng người, nhiệm vụ là tạo ra tỷ lệ chia sẻ lợi nhuận.
Tỷ lệ chia sẻ lợi nhuận là gì?
Trong một công ty hợp danh, lợi nhuận và lỗ được chia sẻ giữa các đối tác tùy thuộc vào vốn họ đầu tư vào kinh doanh. Dựa trên phần trăm đầu tư vốn đó, chúng ta tính tỷ lệ chia sẻ lợi nhuận cho thấy số tiền lợi nhuận sẽ được đưa cho mỗi đối tác.
Công thức:
Đối tác 1 = vốn đầu tư * khoảng thời gian
Đối tác 2 = vốn đầu tư * khoảng thời gian
Đối tác 3 = vốn đầu tư * khoảng thời gian
...
Người n = vốn đầu tư * khoảng thời gian
Tỷ lệ chia sẻ lợi nhuận = Đối tác 1 : Đối tác 2 : Đối tác 3 : ...
Ví dụ
Đầu vào: amount[] = {1000, 2000, 2000}, time[] = {2, 3, 4}
Đầu ra: tỷ lệ chia sẻ lợi nhuận 1 : 3 : 4
Đầu vào: amount[] = {5000, 6000, 1000}, time[] = {6, 6, 12}
Đầu ra: tỷ lệ chia sẻ lợi nhuận 5 : 6 : 2
Phương pháp giải quyết bài toán:
- Nhập mảng vốn đầu tư bởi nhiều đối tác và mảng thời gian tương ứng
- Nhân vốn của một đối tác với thời gian của người đó, làm tương tự với các đối tác khác
- Tính tỷ lệ của các giá trị đã nhân
- Hiển thị kết quả cuối cùng
THUẬT TOÁN
BẮT ĐẦU
Bước 1 → Khai báo hàm tính GCD
int GCD(int arr[], int size)
Khai báo int i
Khai báo int result = arr[0]
VỒNG LẶP VỚI i = 1; i < size; i++
Gán result = __gcd(arr[i], result)
KẾT THÚC
TRẢ VỀ result
Bước 2 → Khai báo hàm tính tỷ lệ chia sẻ lợi nhuận
void cal_ratio(int amount[], int time[], int size)
Khai báo int i, arr[size]
VỒNG LẶP VỚI i = 0; i < size; i++
Gán arr[i] = amount[i] * time[i]
KẾT THÚC
Khai báo int ratio = GCD(arr, size)
VỒNG LẶP VỚI i = 0; i < size - 1; i++
In arr[i] / ratio và " : "
KẾT THÚC
In arr[i] / ratio
Bước 3 → Trong main()
Khai báo int amount[] = {1000, 2000, 2000}
Khai báo int time[] = {2, 3, 4}
Tính int size = sizeof(amount) / sizeof(amount[0])
Gọi cal_ratio(amount, time, size)
DỪNG
Ví dụ mã nguồn
#include <bits/stdc++.h>
using namespace std;
// Tính GCD
int GCD(int arr[], int size) {
int i;
int result = arr[0];
for (i = 1; i < size; i++)
result = __gcd(arr[i], result);
return result;
}
// Tính tỷ lệ chia sẻ lợi nhuận
void cal_ratio(int amount[], int time[], int size) {
int i, arr[size];
for (i = 0; i < size; i++)
arr[i] = amount[i] * time[i];
int ratio = GCD(arr, size);
for (i = 0; i < size - 1; i++)
cout << arr[i] / ratio << " : ";
cout << arr[i] / ratio;
}
int main() {
int amount[] = {1000, 2000, 2000};
int time[] = {2, 3, 4};
int size = sizeof(amount) / sizeof(amount[0]);
cout << "profit sharing ratio ";
cal_ratio(amount, time, size);
return 0;
}
Kết quả đầu ra
profit sharing ratio 1 : 3 : 4