Ý tưởng: vì thêm bớt đồng xu ở thời điểm nào không ảnh hưởng kết quả nên mình cho Tèo chơi cho đến hết xu rồi mới cộng phần thưởng, rồi lặp lại quy trình đó khi nào hết xu thì thôi
Không hiểu sao làm mãi vẫn chỉ được 5/100
#include <bits/stdc++.h>
using namespace std;
#define taskname "GAME"
int xeng(int &n, int &a1, int &a2, int &a3,int &dem) { //n là số xu,a1,a2,a3 là số lượt chơi ban đầu đã được chơi
if(n==0) return dem;
dem+=3*(n/3);
a1+=n/3;
a2+=n/3;
a3+=n/3;
n=n%3;
if(n==1) {
dem+=1;
a1+=1;
n=0;
}
if(n==2) {
dem+=2;
a1+=1;
a2+=1;
n=0;
}
if(a1>=35) {
n+=(30*(a1/35)); //cộng phần thưởng
a1=a1%35; //sau khi cộng thì máy sẽ reset về a1%35
}
if(a2>=100) {
n+=60*(a2/100);
a2=a2%100;
}
if(a3>=10) {
n+=9*(a3/10);
a3=a3%10;
}
return xeng(n,a1,a2,a3,dem);
}
int main() {
if (fopen(taskname".inp", "r")) {
freopen(taskname".inp", "r", stdin);
freopen(taskname".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
int n,a1,a2,a3,dem;cin>>n>>a1>>a2>>a3;
dem=0;
cout<<xeng(n,a1,a2,a3,dem);
return 0;
}