QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#204553 | #7562. Except One | ucup-team045# | AC ✓ | 0ms | 3880kb | C++20 | 4.2kb | 2023-10-07 13:11:24 | 2023-10-07 13:11:24 |
Judging History
answer
#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
using LL = long long;
namespace var_mint_ns {
struct VarModular {
using value_type = int;
private:
static value_type P;
public:
value_type value;
VarModular(long long k = 0) : value(norm(k % P)) {}
friend VarModular& operator += ( VarModular& n, const VarModular& m) { n.value += m.value; if (n.value >= P) n.value -= P; return n; }
friend VarModular operator + (const VarModular& n, const VarModular& m) { VarModular r = n; return r += m; }
friend VarModular& operator -= ( VarModular& n, const VarModular& m) { n.value -= m.value; if (n.value < 0) n.value += P; return n; }
friend VarModular operator - (const VarModular& n, const VarModular& m) { VarModular r = n; return r -= m; }
friend VarModular operator - (const VarModular& n) { return VarModular(-n.value); }
friend VarModular& operator *= ( VarModular& n, const VarModular& m) { n.value = reduce(n.value * 1ll * m.value); return n; }
friend VarModular operator * (const VarModular& n, const VarModular& m) { VarModular r = n; return r *= m; }
friend VarModular& operator /= ( VarModular& n, const VarModular& m) { return n *= m.inv(); }
friend VarModular operator / (const VarModular& n, const VarModular& m) { VarModular r = n; return r /= m; }
VarModular& operator ++ ( ) { return *this += 1; }
VarModular& operator -- ( ) { return *this -= 1; }
VarModular operator ++ (int) { VarModular r = *this; *this += 1; return r; }
VarModular operator -- (int) { VarModular r = *this; *this -= 1; return r; }
friend bool operator == (const VarModular& n, const VarModular& m) { return n.value == m.value; }
friend bool operator != (const VarModular& n, const VarModular& m) { return n.value != m.value; }
explicit operator int() const { return value; }
explicit operator bool() const { return value; }
explicit operator long long() const { return value; }
static value_type mod() { return P; }
value_type norm(long long k) {
if (k >= P) k -= P;
if (k < 0) k += P;
return k;
}
VarModular inv() const {
value_type a = value, b = P, x = 0, y = 1;
while (a != 0) { value_type k = b / a; b -= k * a; x -= k * y; swap(a, b); swap(x, y); }
return VarModular(x);
}
private:
static uint64_t m;
public:
static void set_mod(value_type mod) {
m = (__uint128_t(1) << 64) / mod;
P = mod;
}
static value_type reduce(uint64_t a) {
uint64_t q = ((__uint128_t(m) * a) >> 64);
a -= q * P;
if (a >= P)
a -= P;
return a;
}
};
uint64_t VarModular::m = 0;
VarModular pow(VarModular m, long long p) {
VarModular r(1);
while (p) {
if (p & 1) r *= m;
m *= m;
p >>= 1;
}
return r;
}
VarModular::value_type VarModular::P;
// use "VarModular::set_mod([your value])" later
ostream& operator << (ostream& o, const VarModular& m) { return o << m.value; }
istream& operator >> (istream& i, VarModular& m) { long long k; i >> k; m.value = m.norm(k); return i; }
string to_string(const VarModular& m) { return to_string(m.value); }
using mint = VarModular;
// using mint = long double;
vector<mint> fact, invfact;
void init_C(int n) {
fact.assign(n + 1, 1); invfact.assign(n + 1, 1);
for (int i = 2; i <= n; ++i) fact[i] = fact[i - 1] * i;
invfact.back() = mint(1) / fact.back();
for (int i = n - 1; i >= 0; --i) invfact[i] = invfact[i + 1] * (i + 1);
}
mint C(int n, int k) {
if (k < 0 || k > n) return 0;
else return fact[n] * invfact[k] * invfact[n - k];
}
}
using namespace var_mint_ns;
int main(){
#ifdef LOCAL
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int p, k, t;
cin >> p >> k >> t;
VarModular::set_mod(p);
cout << pow(mint(1LL * p * (p - 1) / 2 - k), t) << '\n';
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3872kb
input:
7 5 3
output:
1
result:
ok 1 number(s): "1"
Test #2:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
11 6 7
output:
3
result:
ok 1 number(s): "3"
Test #3:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
3 2 1
output:
1
result:
ok 1 number(s): "1"
Test #4:
score: 0
Accepted
time: 0ms
memory: 3872kb
input:
596620183 516846890 38276329
output:
135352707
result:
ok 1 number(s): "135352707"
Test #5:
score: 0
Accepted
time: 0ms
memory: 3880kb
input:
382744931 85302262 235496559
output:
14577469
result:
ok 1 number(s): "14577469"
Test #6:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
659446013 641119314 378275666
output:
290624162
result:
ok 1 number(s): "290624162"
Test #7:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
227 163 124
output:
189
result:
ok 1 number(s): "189"
Test #8:
score: 0
Accepted
time: 0ms
memory: 3876kb
input:
197 187 19
output:
62
result:
ok 1 number(s): "62"
Test #9:
score: 0
Accepted
time: 0ms
memory: 3868kb
input:
5 3 3
output:
3
result:
ok 1 number(s): "3"
Test #10:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
7 6 4
output:
1
result:
ok 1 number(s): "1"
Test #11:
score: 0
Accepted
time: 0ms
memory: 3868kb
input:
7 1 1
output:
6
result:
ok 1 number(s): "6"
Test #12:
score: 0
Accepted
time: 0ms
memory: 3804kb
input:
782371 586755 418517
output:
298550
result:
ok 1 number(s): "298550"
Test #13:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
181081 178315 76002
output:
125177
result:
ok 1 number(s): "125177"
Test #14:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
715019 492103 446729
output:
221541
result:
ok 1 number(s): "221541"
Test #15:
score: 0
Accepted
time: 0ms
memory: 3804kb
input:
238985261 199832612 162675695
output:
65826267
result:
ok 1 number(s): "65826267"
Test #16:
score: 0
Accepted
time: 0ms
memory: 3648kb
input:
129716453 10994076 62963738
output:
5186275
result:
ok 1 number(s): "5186275"
Test #17:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
962360593 652577122 345596237
output:
814039152
result:
ok 1 number(s): "814039152"
Test #18:
score: 0
Accepted
time: 0ms
memory: 3640kb
input:
871606937 839183139 754188014
output:
466391387
result:
ok 1 number(s): "466391387"
Test #19:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
275568091 270750503 241146839
output:
252569968
result:
ok 1 number(s): "252569968"
Test #20:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
562028473 111749710 450258818
output:
63116256
result:
ok 1 number(s): "63116256"