您有 5 种不同类型的硬币,每种硬币的值都等于前 5 个三角形数字之一: 1361015 。这些硬币类型非常丰富。您的目标是找到所需的最少数量的硬币,以使它们的总价值恰好为 n
我们可以证明答案总是存在的。
#include<bits/stdc++.h>
#define int long long
typedef long long ll;
using namespace std;
const int N = 1e5 + 10;
const int mod  = 1e9 + 7;
void solve(){
	int n;
	cin>>n;
	int a1[4] = {15,6,3,1};
	int ans = 0;
	if(n%3 == 0){		//如果是3的倍数,则不考虑 10
		for(int i = 0;i < 4; i++){
			ans += n / a1[i];
			n %= a1[i];
		}
	}else{
		int cnt = 0,x = n;	//先考虑10
		while(x){
			cnt += x%10;
			x /= 10;
		}
		int mi = cnt % 3;
		ans = min(mi,n/10);
		n -= ans * 10;
		for(int i = 0;i < 4; i++){
			ans += n / a1[i];
			n %= a1[i];
		}
	}
	cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL),cout.tie(NULL);
    int t = 1;
    cin>>t;
    while(t--){
        solve();
    }
    return 0 ;
}