QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#121146 | #3278. 算术 | zhouhuanyi | 0 | 0ms | 3400kb | C++11 | 1.1kb | 2023-07-07 17:06:27 | 2023-07-07 17:06:30 |
Judging History
answer
#include<iostream>
#include<cstdio>
#define N 30
using namespace std;
long long read()
{
char c=0;
long long sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
int T,length;
long long tong[N+1],b,p,phip;
long long fast_pow(long long a,long long b)
{
long long res=1,mul=a;
while (b)
{
if (b&1) res=(__int128)(res)*mul%p;
mul=(__int128)(mul)*mul%p,b>>=1;
}
return res;
}
int main()
{
long long x;
T=read(),x=p=phip=read();
for (long long i=2;i*i<=p;++i)
if (x%i==0)
{
phip=phip/i*(i-1);
while (x%i==0) x/=i;
}
if (x!=1) phip=phip/x*(x-1);
x=phip;
for (long long i=2;i*i<=phip;++i)
if (x%i==0)
{
tong[++length]=i;
while (x%i==0) x/=i;
}
if (x!=1) tong[++length]=x;
while (T--)
{
b=read(),x=phip;
for (int i=1;i<=length;++i)
while (x%tong[i]==0&&fast_pow(b,x/tong[i])==1)
x/=tong[i];
if (x&1) puts("-1");
else
{
if (x!=2) printf("%lld\n",(x-2)>>1);
else puts("2");
}
}
return 0;
}
详细
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3400kb
input:
10 3 10 7 13 4 17 28 29 13 4 30
output:
-1 -1 -1 -1 2 -1 2 -1 -1 2
result:
wrong answer 10th numbers differ - expected: '-1', found: '2'
Subtask #2:
score: 0
Skipped
Dependency #1:
0%
Subtask #3:
score: 0
Skipped
Dependency #1:
0%
Subtask #4:
score: 0
Skipped
Dependency #1:
0%
Subtask #5:
score: 0
Skipped
Dependency #1:
0%
Subtask #6:
score: 0
Skipped
Dependency #1:
0%
Subtask #7:
score: 0
Skipped
Dependency #1:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
0%
Subtask #9:
score: 0
Skipped
Dependency #1:
0%
Subtask #10:
score: 0
Skipped
Dependency #1:
0%