题意:
给定a,b,定义a*b的倍数为好数,除了好数且是a的倍数的数是接近好数,现在让你构造三个数x,y,z,使x+y=z且三个数中有一个好数,两个接近好数
思路:
构造题,一般取其端点值或从最小的情况开始考虑,将条件列出来然后特殊化
第一个条件,要是好数,就得是a*b的倍数,取端点就是a*b
第二个条件,要是接近好数,就得是a的倍数,那就取端点值,直接取a
第三个就是前两个的和了a*(b+1),刚好是接近好数
Code:
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,a,b;
void solve(){
cin>>a>>b;
if(b==1) cout<<"NO"<<'\n';
else{
cout<<"YES"<<'\n';
cout<<a<<" "<<a*b<<" "<<a*(b+1)<<'\n';
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int T=1;
cin>>T;
while(T--)solve();
return 0;
}