QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#14881 | #1863. Yes, Prime Minister | Rhodoks | TL | 699ms | 94220kb | C++20 | 1.4kb | 2021-10-20 16:16:59 | 2022-05-17 01:10:22 |
Judging History
answer
#include <bits/stdc++.h>
#define DB double
#define LL long long
#define MST(a,b) memset((a),(b),sizeof(a))
#ifdef _DEBUG_
#define MRK() cout<<"Mark"<<endl;
#define WRT(x) cout<<#x<<" = "<<(x)<<endl;
#else
#define MRK() ;
#define WRT(x) ;
#endif
#define MAXN 20100000
#define MAXM 2010000
#define MOD 998244353 //1000000007
#define INF 0x3f3f3f3f
#define LLINF 0x3f3f3f3f3f3f3f3f
#define EPS 1e-5
#define _ 0
using namespace std;
int notprime[MAXN];
vector<int> rec1;
vector<int> rec2;
void init()
{
notprime[0]=notprime[1]=1;
for (int i=2;i<MAXN;i++)
{
if (notprime[i])
continue;
if (i&1)
rec2.push_back(i/2+1);
rec1.push_back(i);
for (int j=2*i;j<MAXN;j+=i)
notprime[j]=1;
}
}
int x;
void work()
{
scanf("%d",&x);
if (x>=0 && !notprime[x])
{
cout<<1<<endl;
return;
}
if (x>=1 && (!notprime[2*x-1] || !notprime[2*x+1]))
{
cout<<2<<endl;
return;
}
int ans=INF;
int t;
if (x>=0)
{
t=*lower_bound(rec1.begin(),rec1.end(),x);
ans=min(ans,2*t);
t=*lower_bound(rec2.begin(),rec2.end(),x);
ans=min(ans,2*t-1);
}
else
{
t=*lower_bound(rec1.begin(),rec1.end(),-x+1);
ans=min(ans,2*t);
t=*lower_bound(rec2.begin(),rec2.end(),-x+2);
ans=min(ans,2*t-1);
}
cout<<ans<<endl;
}
int main()
{
init();
int casenum=1;
scanf("%d",&casenum);
for (int testcase=1;testcase<=casenum;testcase++)
{
work();
}
return ~~(0^_^0);
}
详细
Test #1:
score: 100
Accepted
time: 699ms
memory: 94220kb
input:
10 -2 -1 0 1 2 3 4 5 6 7
output:
6 4 3 2 1 1 2 1 2 1
result:
ok 10 numbers
Test #2:
score: 0
Accepted
time: 689ms
memory: 94104kb
input:
201 -100 -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -88 -87 -86 -85 -84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -36 -35 -34 -33 -32 -31 -30 -29 -28 -27...
output:
202 202 199 197 194 193 191 191 191 191 191 181 178 178 178 173 173 173 166 166 163 163 158 157 157 157 151 149 146 146 142 142 139 137 134 134 131 131 127 127 122 122 118 118 118 113 113 109 106 106 103 101 101 97 94 94 94 89 86 86 82 82 79 79 74 73 71 71 67 67 62 61 58 58 58 53 53 53 46 46 43 41 3...
result:
ok 201 numbers
Test #3:
score: -100
Time Limit Exceeded
input:
1000000 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 ...
output:
2 1 1 2 1 2 1 2 2 2 1 2 1 2 2 2 1 2 1 2 2 2 1 2 53 2 2 58 1 2 1 67 2 2 2 2 1 79 2 2 1 2 1 2 2 94 1 2 2 2 2 2 1 2 2 2 2 118 1 122 1 127 2 2 2 2 1 2 2 2 1 146 1 2 2 2 157 2 1 163 2 2 1 2 173 2 2 178 1 2 2 191 191 191 2 2 1 2 2 2 1 206 1 211 2 2 1 218 1 223 2 2 1 2 2 2 2 239 2 2 2 251 251 251 2 2 1 2 2...