思路:
因为是要将一个数分成三个不能被3整除的数字,那么我们就可以分情况讨论,
如果n%3=0,我们需要将三个数字改成%3=1的数字,要想满足情况最小的是12(分成1 4 7)
如果n%3=1,那我们要分成两个%3=1的数字和一个%3=2的数字,那么最小是7(分成1 2 4)
如果n%3=2,那么我们就要分成两个%3=2的数字和一个%3=1的数字,那么最小是8(分成1 2 5)
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
void solve(){
int n;
cin>>n;
if(n%3==0){
if(n>=12){
cout<<"YES"<<endl;
cout<<1<<" "<<4<<" "<<n-5<<endl;
}
else cout<<"NO"<<endl;
}
else if(n%3==1){
if(n>=7){
cout<<"YES"<<endl;
cout<<1<<" "<<2<<" "<<n-3<<endl;
}
else{
cout<<"NO"<<endl;
}
}
else{
if(n>=8){
cout<<"YES"<<endl;
cout<<1<<" "<<2<<" "<<n-3<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return ;
}
int main(){
int t=1;
cin>>t;
while(t--){
solve();
}
return 0;
}
标签:分成,12,数字,n%,豁然开朗,一道,long,简单,cout
From: https://www.cnblogs.com/du463/p/17760596.html