#3963. [GESP2406 五级] ⼩杨的幸运数字
[GESP2406 五级] ⼩杨的幸运数字
⼩杨的幸运数字
题目描述
⼩杨认为他的幸运数字应该恰好有两种不同的质因⼦,例如, 的质因⼦有 ,恰好为两种不同的质 因⼦,因此 是幸运数字,⽽ 的质因⼦有 ,不符合要求,不为幸运数字。 ⼩杨现在有 个正整数,他想知道每个正整数是否是他的幸运数字。
输入格式
第⼀⾏包含⼀个正整数 ,代表正整数个数。 之后 ⾏,每⾏⼀个正整数。
输出格式
输出 ⾏,对于每个正整数,如果是幸运数字,输出 ,否则输出 。 3.2.4 样例1 1 3 2 7 3 12 4 30 1 0 2 1 3 0 3.2.5 样例解释 的质因⼦有 ,只有⼀种。 的质因⼦有 , ,恰好有两种。 的质因⼦有 , , ,有三种。 3.2.6 数据范围 子任务编号 数据点占比 正整数值域 1 40% 2 60% 对于全部数据,保证有 ,每个正整数 满⾜ 。 3.2.7 参考程序 1 #include<bits/stdc++.h> 2 using namespace std; 3 map<int,int> mp; 4 const int N = 1e5+10; 5 int calc(int x) { 6 int res = 0; 7 set s; 8 for (int i = 2; i * i <= x; i++) { 9 if (x % i == 0) { 10 s.insert(i); 11 while (x% i == 0){ 12 x/= i; 13 14 } 15 } 16 } 17 if (x != 1) { 18 s.insert(x); 19 } 20 return (int)s.size(); 21 } 22 int a[N]; 23 int main(){ 24 int n; 25 cin>>n; 26 long long ans = 0; 27 int pre = 0; 28 for(int i=1;i<=n;i++){ 29 cin>>a[i]; 30 int x = calc(a[i]); 31 if(x==2)cout<<"1\n"; 32 else cout<<"0\n"; 33 } 34 35 }
样例输入 #1
1 3
2 7
3 12
4 30
1 0
2 1
3 0
样例输出 #1
样例解释 #1
的质因⼦有 ,只有⼀种。 的质因⼦有 , ,恰好有两种。 的质因⼦有 , , ,有三种。
数据范围
子任务编号 数据点占比 正整数值域 1 40% 2 60% 对于全部数据,保证有 ,每个正整数 满⾜ 。
知识点与难度
本题涉及的知识点从属于 GESP 5级,难度等级:⭐⭐⭐⭐ 。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 / 特殊性质 |
| 2 | 15 | 9~11 | Hack |
| 3 | 30 | 12~20 | 中大规模 |
| 4 | 25 | 21~25 | 随机回归 |
生测试数据后,按实际 subtask 分组改写上表。