4325: 【基础】丑数判断(1755)

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

素因子都在集合{2 3 5 7}的数称为丑数(ugly number),给定n个整数,请逐个判断每个数是否是丑数,如果是丑数,请输出Y,不是丑数请输出N

输入

第1行读入整数n(n≤20);
第2行给定n个整数(数值在1~109)之间,数字之间用空格隔开。

输出

输出n行,第i行输出字符'Y'或者'N'代表第i行读入的整数是否是丑数。
特别的,我们假定整数1也是丑数。

样例输入 复制

5
1 8 11 20 121

样例输出 复制

Y
Y
N
Y
N

提示

#include <iostream>
#include <vector>
using namespace std;

bool isUgly(int num) {
    if (num <= 0) return false;
    if (num == 1) return true;
    int factors[] = {2, 3, 5, 7};
    for (int i = 0; i < 4; ++i) {
        while (num % factors[i] == 0) {
            num /= factors[i];
        }
    }
    return num == 1;
}

int main() {
    int n;
    cin >> n;
    vector<int> numbers(n);
    for (int i = 0; i < n; ++i) {
        cin >> numbers[i];
    }
    for (int i = 0; i < n; ++i) {
        if (isUgly(numbers[i])) {
            cout << "Y" << endl;
        } else {
            cout << "N" << endl;
        }
    }
    return 0;
}