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)之间,数字之间用空格隔开。
第2行给定n个整数(数值在1~109)之间,数字之间用空格隔开。
输出
输出n行,第i行输出字符'Y'或者'N'代表第i行读入的整数是否是丑数。
特别的,我们假定整数1也是丑数。
特别的,我们假定整数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;
}