Submission #00118


ソースコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <bits/stdc++.h>
using namespace std;
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define ll long long
#define next_per(v) next_permutation(v.begin(), v.end())
#define prev_per(v) prev_permutation(v.begin(), v.end())
#define fixed(v) fixed << setprecision(v)
#define total(n) ((n) * ((n) + 1) / 2)
#define combi(n) ((n) * ((n)-1) / 2) // n個の数の組み合わせ数
#define lcm(a, b) ((a) * (b) / __gcd(a, b))
// binery_search(all(v),key) = keyがあるかないかをboolで返す
// lower_bound(all(v),key) = key以上のイテレーターを返す(一番左)
// upper_bound(all(v),key) = keyより大きい要素のイテレーターを返す
// 最小値=max_element(v.begin(),v.end());
// 最大値=min_element(v.begin(),v.end());
template <class x>
x rng_total(x l, x r)
{ // l ~ rまでの数の総和
return ((l + r) * (r - l + 1) / 2);
}
template <class x>
x rng_combi(x l, x r)
{ //「l個の物からr個取った組み合わせ数」
x ans = 1;
l++;
for (x i = 1; i <= r; i++)
{
x sub = l - i;
ans *= sub;
ans /= i;
}
return (ans);
}
template <class x>
x dig_sum(x num)
{ // 各桁の総和
x ans = 0;
while (num > 0)
{
ans += num % 10;
num /= 10;
}
return (ans);
}
// [struct]--------------------------------------
// <UnionFind>
struct UnionFind {
// 親の要素とサイズを管理する変数
int group_cnt;
vector<int> parent, size;
// 変数の初期化
UnionFind(int n) {
parent.resize(n, -1);
size.resize(n, 1);
group_cnt = n;
}
// x の根を求める
int root(int x) {
// x が根のとき
if(parent[x] == -1) return x;
// 経路圧縮
return parent[x] = root(parent[x]);
}
// x と y の根が同じか
bool isSame(int x, int y) {
return root(x) == root(y);
}
// x と y のグループを併合する
bool unite(int x, int y) {
// x と y の根を取得
int rootX = root(x);
int rootY = root(y);
// x と y が同じグループのときは何もしない
if (rootX == rootY) return(false);
// union by size( y のサイズが小さくなるように調整 )
if (size[rootX] < size[rootY]) swap(rootX, rootY);
// y の親を x にする
parent[rootY] = rootX;
// 連結成分の個数を一つ減らす
group_cnt--;
// x のサイズに y のサイズを足す
size[rootX] += size[rootY];
return(true);
}
};
//-----------------------------------------------------
bool normal(int i){
int count = 0;
for(int j = 1; j <= i; j++){
if(i % j == 0){
count++;
}
if(count > 2){
break;
}
}
if(count == 2){
return(true);
}
return(false);
}
int main()
{
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
//-----------------------------------------------------
int n;
cin >> n;
for (int i = 0; i < n; i++) {
int a;
cin >> a;
if (a == 1) {
cout << 2 << '\n';
} else
if (normal(a)) {
cout << 1 << '\n';
} else {
cout << "NA" << '\n';
}
}
return(0);
}
// sishou

ステータス

項目 データ
問題 0009 - 掛けても素数!?
ユーザー名 ei2134
投稿日時 2023-07-18 17:33:30
言語 C++17
状態 Time Limit Exceeded
得点 0
ソースコード長 3502 Byte
最大実行時間 1000 ms
最大メモリ使用量 7488 KB

セット

セット 得点 Cases
1 ALL 0 / 100 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
in01.txt AC 16 ms 604 KB
1
in02.txt AC 18 ms 680 KB
1
in03.txt AC 19 ms 628 KB
1
in04.txt AC 15 ms 576 KB
1
in05.txt AC 15 ms 644 KB
1
in06.txt TLE 1000 ms 596 KB
1
in07.txt TLE 1000 ms 672 KB
1
in08.txt TLE 1000 ms 616 KB
1
in09.txt TLE 1000 ms 568 KB
1
in10.txt TLE 1000 ms 640 KB
1
in11.txt TLE 1000 ms 584 KB
1
in12.txt TLE 1000 ms 532 KB
1
in13.txt TLE 1000 ms 476 KB
1
in14.txt TLE 1000 ms 428 KB
1
in15.txt TLE 1000 ms 504 KB
1
in16.txt TLE 1000 ms 584 KB
1
in17.txt TLE 1000 ms 532 KB
1
in18.txt TLE 1000 ms 488 KB
1
in19.txt TLE 1000 ms 440 KB
1
in20.txt AC 127 ms 3472 KB
1
in21.txt AC 96 ms 5344 KB
1
in22.txt AC 115 ms 7340 KB
1
in23.txt TLE 1000 ms 7412 KB
1
in24.txt AC 17 ms 7488 KB
1
in25.txt AC 19 ms 7444 KB
1
in26.txt AC 28 ms 7396 KB
1
sample01.txt AC 15 ms 7352 KB
1