题解
首先拜谢波叔呀,一眼看上去没思路,直到看见了四重循环,大彻大悟。
Solution
没什么好说的,暴力四重
题意大意就是给你一个数,在 1,3,6,10,15 中取数,使取出的数等于输入的数,求出至少需要用多少个数。
求数代码:
for(long long i=0;i<=2;i++){
for(long long j=0;j<=1;j++){
for(long long k=0;k<=4;k++){
for(long long f=0;f<=2;f++){
if (i+j*3+k*6+f*10<=n&&(n-i-j*3-k*6-f*10)%15==0){
ans=min(ans,i+j+k+f+(n-i-j*3-k*6-f*10)/15);
}
}
}
}
}
因为要求最小,所以 $ans$ 要初始化为无穷大。
CODE
#include<iostream>
using namespace std;
long long t,ans;
void solve(long long n){
for(long long i=0;i<=2;i++){
for(long long j=0;j<=1;j++){
for(long long k=0;k<=4;k++){
for(long long f=0;f<=2;f++){
if (i+j*3+k*6+f*10<=n&&(n-i-j*3-k*6-f*10)%15==0){
ans=min(ans,i+j+k+f+(n-i-j*3-k*6-f*10)/15);
}
}
}
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>t;
while(t--)
{
long long n;
cin>>n;
ans=2147483647;
solve(n);
cout<<ans;
}
return 0;
}
谢谢观看,喵。
标签:题解,long,solve,CF1934,ans,四重 From: https://www.cnblogs.com/ydkxj/p/18049414