很水的一道题,做这道题的时候,只要注意下真约数的概念就可以了,因为我们知道,真约数就是说这个数字原本的所有的约数出去本身后的约数,
比如说,6的约数是 1 2 3 6,而6的真约数是1 2 3,这就是在判约数的时候注意下等号的位置就行了。
# include<cstdio> # include<iostream> # include<cstring> using namespace std; # define MAX 600000 int a[MAX]; int f( int x ) { int sum = 0; for ( int i = 1;i < x;i++ ) { if ( x%i == 0 ) sum+=i; } return sum; } int main(void) { int t;cin>>t; memset(a,0,sizeof(a)); while ( t-- ) { int a,b; cin>>a>>b; int m = f(a); int n = f(b); if ( m == b&&n == a ) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }