PTA_乙级_1096

PTA_乙级_1096_第1张图片
Q1:因数
在数学中,一个数的因数是能够整除该数的整数。换句话说,如果我们将一个数 a 除以另一个整数 b 而得到整数商,那么 b 就是 a 的因数。以下是一些例子:
1.因数的定义:
如果整数 b 可以被整数 a 整除,那么 b 是 a 的因数。
2.举例:
3.对于数 12,它的因数包括 1、2、3、4、6 和 12,因为它们能够整除 12。
4.对于数 8,它的因数包括 1、2、4 和 8。
5.对于负数 -6,它的因数包括 -1、2、3 和 -6。
6.特殊情况:所有整数都有两个特殊的因数,即 1 和它自身。和负数的因数的定义也是相同的,即能够整除它们的整数。

因数在数学和实际问题中有着重要的应用,例如在分解整数、求最大公约数、解方程等方面。

#include 
#include 
using namespace std;

int main() {
    int n;
    cout << "Enter a positive integer: ";
    cin >> n;

    vector<int> v;

    // 因为 n 的因数都是成对出现,所以枚举较小的那个因数
    for (int i = 1; i <= n / i; i++) {
        if (n % i == 0) {
            v.push_back(i);
            // 当两个因数不同时,才全部添加
            if (i != n / i) v.push_back(n / i);
        }
    }

    cout << "Factors of " << n << " are: ";
    for (int factor : v) {
       cout << factor << " ";
    }

    cout << std::endl;

    return 0;
}

#include 
#include 
using namespace std;
bool check(int n) {
    //因为不确定n因数的个数, 所以我们可以用不定长数组来存储
    vector<int> v;

    //因为n 的因数都是成对出现, 所以我们可以枚举较小的那个因数, 
    //随后 用 n / i表示另一个因数
    for (int i = 1; i <= n / i; i++) {
        if (n % i == 0) {
            v.push_back(i);
            //当两个因数不同时,才全部添加
            if (i != n / i) v.push_back(n / i);
        }
    }
    //遍历每个因数
    if (v.size() < 4) return false;
    for (int i = 0; i < v.size(); i++)
        for (int j = i + 1; j < v.size(); j++)
            for (int l = j + 1; l < v.size(); l++)
                for (int r = l + 1; r < v.size(); r++)
                    if ((v[i] + v[j] + v[l] + v[r]) % n == 0) return true;
    return false;

}
int main() {
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int x;
        cin >> x;
        //使用三元表达式来简化输入输出
        // 若函数返回 true 则打印 Yes
        // 反之打印 No
        cout << (check(x) ? "Yes" : "No");
        if (i != n - 1)
            cout << endl;
    }
}

求 4 个不同正因数之和用四个for循环即可

你可能感兴趣的:(PTA乙级,算法)