Codeforces Round #720 (Div. 2) A. Nastia and Nearly Good Numbers

清疚 2024-03-31 13:43 189阅读 0赞

Problem - A - Codeforces

题意:

给定a,b,定义a*b的倍数为好数,除了好数且是a的倍数的数是接近好数,现在让你构造三个数x,y,z,使x+y=z且三个数中有一个好数,两个接近好数

思路:

构造题,一般取其端点值或从最小的情况开始考虑,将条件列出来然后特殊化

第一个条件,要是好数,就得是a*b的倍数,取端点就是a*b

第二个条件,要是接近好数,就得是a的倍数,那就取端点值,直接取a

第三个就是前两个的和了a*(b+1),刚好是接近好数

Code:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define int long long
  4. int n,a,b;
  5. void solve(){
  6. cin>>a>>b;
  7. if(b==1) cout<<"NO"<<'\n';
  8. else{
  9. cout<<"YES"<<'\n';
  10. cout<<a<<" "<<a*b<<" "<<a*(b+1)<<'\n';
  11. }
  12. }
  13. signed main(){
  14. ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
  15. int T=1;
  16. cin>>T;
  17. while(T--)solve();
  18. return 0;
  19. }

发表评论

表情:
评论列表 (有 0 条评论,189人围观)

还没有评论,来说两句吧...

相关阅读