Lựa chọn thông minh
Một công ty phát triển kĩ thuật số có một thông báo rất hấp dẫn: Cần thuê một nhóm
kĩ thuật viên hoàn thành một dự án trong N ngày, công việc rất khó khăn nhưng tiền công cho
dự án rất thú vị. Nhóm kĩ thuật viên được nhận làm dự án sẽ được lựa chọn một trong hai
phương án trả tiền công như sau:
- Phương án 1: Nhận một lần và nhận tiền công trước với số tiền M đồng.
- Phương án 2: Nhận ở ngày thứ N, ngày đầu nhận 1 đồng, ngày sau nhận gấp đôi ngày
trước đó.
Yêu cầu: Em hãy lập trình giúp công ty lựa chọn phương án nhận tiền công để số tiền
nhận được là lớn nhất.
Dữ liệu: cho từ tệp văn bản LCTM.INP hai số M, N (1 ≤ M ≤ 109; 1 ≤ N ≤ 55)
Kết quả: ghi ra tệp văn bản LCTM.OUT số 1 nếu chọn phương án 1, số 2 nếu chọn
phương án 2.
LCTM.INP LCTM.OUT Giải thích8 3 ->1
Phương án 1: nhận 8 đồng
Phương án 2: ngày 1 nhận 1 đồng, ngày 2 nhận 2
đồng, ngày 3 nhận 4 đồng. Tổng cộng là 7 đồng.
Phương án 1 nhận nhiều hơn.
Ý tưởng: ta nhận thấy ở phương án 2 ngày thứ nhất nhận 1 đồng và ngày 2 gấp đôi ngày 1 hay ngày 2=ngày 1*2 => ngày thứ n sẽ được nhận 2^(n-1) đồng( vì ngày thứ nhất được 1 đồng là 2^0). ta thấy chỉ cần ở ngày 31 thì nhận được 2^30 lớn hơn 10^9 (lớn hơn giới hạn của m) nên ta chỉ cần lặp tối đa 31 lần vì vậy cứ thoải mái code trâu. Ý tưởng code trâu thì đơn giản ta chỉ cần lặp và cứ cộng tiền nhận được vào tiền hiện có đến khi nào mà số tiền hiện có lớn hơn n thì in ra phương án 2 và return 0 luôn, còn nếu mà sau khi lặp hết ngày n mà vẫn chưa in ra phương án 2 thì in phương án 1 luôn
Code mẫu:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,x=1,t=1;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for (int i=2;i<=n;i++)
{
x*=2;
t+=x;
if (t>m)
return cout<<"2\n",0;
}
cout<<"1\n";
}
________________________________________________
Hãy hiểu và làm lại chứ đừng chỉ lấy code!
Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!
Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!
Copyright © 2021 HOCTAPSGK