CF1521A Nastia and Nearly Good Numbers


传送门

分析

题目中说有 $x+y=z$,其中有且仅有一个为好数,其他的为接近好数。


假设 $X$ 或 $Y$ 为好数

设一个好数为 $Z$,两个个接近好数分别为 $X$ 和 $Y$

$\because$ 一个好数可以被 $A \times B$ 整除

$\therefore$ $Z$ 可以表示为 $A \times B \times k_z$

$\because$ 一个接近好数可以被 $A$ 整除

$\therefore$ $X$ 可以表示为 $A \times k_x$

$Y$可以表示为 $A \times k_y$

$\because$ $X+Y=Z$

$\therefore$ $A \times k_x+A \times k_y=A \times B \times k_z$

$\therefore$ $B \times k_x+k_y=k_z$或$k_x+B \times k_y=k_z$

(跟 $A$ 没关系!!!)

又$\because$ 相邻的两个整数互质

$\because$相邻的两个整数互质

$\therefore$($B+1$)与 $B$ 互质

$\therefore$ $1+B=$($B+1$) 符合题意

注意:$B=1$时要返回NO!!!

因为 $1$ 可以被任何数整除,那所有的数都为好数,显然不符合题意。

代码

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
  int t;
  scanf("%lld",&t);
  while(t--){
        long long a,b;
      scanf("%lld %lld",&a,&b);
      if(b==1){
        printf("NO\n");
        continue;
      }else{
        printf("YES\n");
        printf("%lld %lld %lld\n",a,a*b,a*(b+1));
    }
    }
  return 0;
}
  • 记得开long long!!!

文章作者: 王大神——A001
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 王大神——A001 !
  目录