Submission #00114


ソースコード

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
146
#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 IsPrime(int num)
{
if (num < 2) return false;
else if (num == 2) return true;
else if (num % 2 == 0) return false; // 偶数はあらかじめ除く
double sqrtNum = sqrt(num);
for (int i = 3; i <= sqrtNum; i += 2)
{
if (num % i == 0)
{
// 素数ではない
return false;
}
}
// 素数である
return true;
}
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 (IsPrime(a)) {
cout << 1 << '\n';
} else {
cout << "NA" << '\n';
}
}
return(0);
}
// sishou

ステータス

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

セット

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

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
in01.txt WA 28 ms 604 KB
1
in02.txt WA 21 ms 428 KB
1
in03.txt WA 20 ms 500 KB
1
in04.txt WA 23 ms 576 KB
1
in05.txt WA 23 ms 524 KB
1
in06.txt AC 69 ms 992 KB
1
in07.txt AC 270 ms 3880 KB
1
in08.txt AC 224 ms 6252 KB
1
in09.txt AC 221 ms 8628 KB
1
in10.txt AC 277 ms 11520 KB
1
in11.txt AC 275 ms 14416 KB
1
in12.txt AC 288 ms 17304 KB
1
in13.txt AC 279 ms 20200 KB
1
in14.txt AC 276 ms 22964 KB
1
in15.txt WA 287 ms 25724 KB
1
in16.txt AC 801 ms 26564 KB
1
in17.txt TLE 1000 ms 27276 KB
1
in18.txt TLE 1000 ms 27988 KB
1
in19.txt TLE 1000 ms 28580 KB
1
in20.txt AC 115 ms 31596 KB
1
in21.txt WA 93 ms 34488 KB
1
in22.txt AC 118 ms 36484 KB
1
in23.txt TLE 1000 ms 37072 KB
1
in24.txt WA 26 ms 37028 KB
1
in25.txt AC 25 ms 37112 KB
1
in26.txt AC 20 ms 37064 KB
1
sample01.txt AC 17 ms 37016 KB
1