Tanghaohan123456 @ 2024-07-20 17:16:33
why tle
#include<bits/stdc++.h>
using namespace std;
int main(){
int n, s = 0, t, ans=-1;
cin>>n;
for(int i=1;i<=20000;i++){
for(int j=1;j<=25000;j++){
for(int k=1;k<=40000;k++){
if(7*i+4*j+3*k == n){
if(i<j){
if(i<k){
t=i;
}
else{
t=k;
}
}
else{
if(j<k){
t=j;
}
else t=k;
}
if(t>=s){
s=t;
ans=max(i+j+k,ans);
}
}
}
}
}
cout<<ans;
return 0;
}
by Wang_Xu @ 2024-08-12 21:08:27
@Tanghaohan123456 你循环了20000000000000次2*10的18次方,肯定会超,计算机一秒只能循环10的9次方
by Wang_Xu @ 2024-08-12 21:15:22
@Tanghaohan123456 AC代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,a,b,c;
cin>>n;
for(a=n/14;a>=0;a--)
{
for(b=a;b<=n;b++)
{
for(c=a;c<=n/3;c++)
{
if(7*a+4*b+3*c==n)
{
cout<<a<<" "<<b<<" "<<c<<endl;
return 0;
}
}
}
}
cout<<"-1";
return 0;
}