QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#700231 | #5301. Modulo Ruins the Legend | tsogsummit# | WA | 0ms | 3712kb | C++14 | 1.5kb | 2024-11-02 12:28:12 | 2024-11-02 12:28:19 |
Judging History
answer
#include <iostream>
#include <algorithm>
#include <cmath>
#include <map>
#define ll long long
#define F first
#define S second
#define pb push_back
#define mp make_pair
ll phi(ll n) {
ll result = n;
for (ll i = 2; i * i <= n; i++) {
if (n % i == 0) {
while (n % i == 0)
n /= i;
result -= result / i;
}
}
if (n > 1)
result -= result / n;
return result;
}
using namespace std;
ll gcd(ll a, ll b) {
if(b == 0)
return a;
return gcd(b, a % b);
}
ll binpow(ll a, ll b , ll mod) {
ll res = 1;
a %= mod;
while(b > 0) {
if(b & 1){
res = res * a;
res %= mod;
}
a = a * a;
a %= mod;
b >>= 1;
}
return res % mod;
}
int main(){
long long n , m , i;
cin >> n >> m;
long long sum = 0 , a;
for(i = 0 ; i < n ; i ++){
cin >> a;
sum += a;
}
long long k = gcd(gcd(n , n*(n + 1)/ 2) , m);
long long res = sum % k;
cout << res << '\n';//hariu;
long long resres;
if(gcd(n , m) == k){
resres = binpow(n/k , phi(m/k) - 1, m/k);
res -= sum;
while(res < 0)res += m;
cout << (resres * 1ll * sum / k) % (m / k) << " 0";
}
else {
resres = binpow(n*(n + 1)/2/k, phi(m/k) - 1, m/k);
res -= sum;
while(res < 0)res += m;
cout << "0 " << (resres * 1ll * sum / k) % (m / k);
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3588kb
input:
6 24 1 1 4 5 1 4
output:
1 0 5
result:
ok ok
Test #2:
score: 0
Accepted
time: 0ms
memory: 3652kb
input:
7 29 1 9 1 9 8 1 0
output:
0 0 0
result:
ok ok
Test #3:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
1 1 0
output:
0 0 0
result:
ok ok
Test #4:
score: -100
Wrong Answer
time: 0ms
memory: 3712kb
input:
1 1000000000 963837005
output:
0 963837005 0
result:
wrong answer Result not equal to solution.