AtCoder Beginner Contest 084

A

1
2
3
4
5
6
7
8
// LUOGU_RID: 174556437
#include<iostream>
using namespace std;
int main(){
int a;
cin>>a;
cout<<48-a<<endl;
}

B

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
#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 5;
typedef long long LL;
int a, b;
int main()
{
cin >> a >> b;
string s;
cin >> s;
if (s[a] != '-')
{
cout << "No" << endl;
return 0;
}
if (s.size() != a + b + 1)
{
cout << "No" << endl;
return 0;
}
for (int i = 0; i < a; i++)
{
if (s[i] < '0' || s[i] > '9')
{
cout << "No" << endl;
return 0;
}
}
for (int i = a + 1; i <= a + b; i++)
{
if (s[i] < '0' || s[i] > '9')
{
cout << "No" << endl;
return 0;
}
}
cout << "Yes" << endl;
return 0;
}

C

模拟题。

D

可以用欧拉筛筛一下质数然后进行一下暴力。

或者优化一下:使用前缀和进行优化。

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
#include <bits/stdc++.h>

using namespace std;

const int N = 1e6 + 5;
typedef long long LL;
int sum[N];
bool is_prime(int x)
{
if (x < 2)
return false;
for (int i = 2; i <= x / i; ++i)
if (x % i == 0)
return false;
return true;
}
int main()
{
for (int i = 1; i < 100005; i++)
{
sum[i] = sum[i - 1];
if (i % 2)
if (is_prime(i) && is_prime((i + 1) / 2))
sum[i]++;
}
int q;
cin >> q;
while (q--)
{
int x, y;
cin >> x >> y;
cout << sum[y] - sum[x - 1] << endl;
}
return 0;
}