220 284
100 200 输出样例: YES
NO
judge函数用于判断两个数字是否为亲和数。其中:
1.一个数字的约数最大不超过其1/2。
2.若a的所有约数之和不等于b,则直接输出NO,不再处理
以上两点可以提高效率
#include#include using namespace std; //判断两个数是否为亲和数 void judge(int a, int b) { int sum1 = 0, sum2 = 0; for (int i = 1;i <= (a / 2);i++) { if (a%i == 0) { sum1 += i; } } if (sum1 == b) { for (int j = 1;j <= (b / 2);j++) { if (b%j == 0) { sum2 += j; } } if (sum2 == a) { cout << "YES" << endl; } else cout << "NO" << endl; } else cout << "NO" << endl; } int main() { int N, a, b; cin >> N; vector v; for (int i = 0;i < N;i++) { //存入每行的两个数字 cin >> a >> b; v.push_back(a); v.push_back(b); //分行 getchar(); } for (int i = 0;i < v.size();i+=2) { judge(v[i], v[i + 1]); } return 0; }



