微笑的坏坏 @ 2020-04-10 20:48:34
#include<bits/stdc++.h>
using namespace std;
int a,b,sum,ans7,ans4,ans3;
int main()
{
int n;
cin>>n;
sum=n%7;
while(true)
{
if(sum%3==0)
{
ans3+=(sum/3);
break;
}
if(sum%4==0)
{
ans4+=(sum/4);
break;
}
sum+=7;
}
if(sum>n)
{
cout<<-1<<endl;
return 0;
}
n-=sum;
n/=7;
ans7=n/2;
ans4+=n/2;
ans3+=n/2;
ans4+=n%2;
ans3+=n%2;
cout<<ans7<<' '<<ans4<<' '<<ans3<<endl;
return 0;
}
主要就是看%7(因为4+3是7的倍数,7自然也是7的倍数,求出多出来的几个3或几个4)(画个图就行啦)
总之,求解!!!
by bovine__kebi @ 2020-04-10 20:48:56
所以你是WA?
by bovine__kebi @ 2020-04-10 20:49:02
@微笑的坏坏
by 微笑的坏坏 @ 2020-04-10 20:49:48
没错,第14点
by 微笑的坏坏 @ 2020-04-10 20:50:01
@bovine__kebi
by Evan20080715 @ 2020-08-21 21:39:44
我跟你错的一模一样
by liuziyan @ 2020-08-26 20:45:40
试一下n=99 你这个代码输出的是6 9 7 但正解应该是 6 6 11 数据中的第14个点我也下了一下,n=71 你这个代码输出的4 7 5 但正解应该是4 4 9 (虽然我也没看出哪错了)
by lcyxds @ 2021-04-18 07:52:52
@微笑的坏坏 输入 15
时答案是 0 0 5
你的程序输出 0 3 1
问题出在你这个程序碰到 8 之后就会拆成两个 4 进行处理