QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#205211#7562. Except Oneucup-team198#AC ✓1ms3532kbC++231.1kb2023-10-07 15:10:492023-10-07 15:10:49

Judging History

你现在查看的是最新测评结果

  • [2023-10-07 15:10:49]
  • 评测
  • 测评结果:AC
  • 用时:1ms
  • 内存:3532kb
  • [2023-10-07 15:10:49]
  • 提交

answer

#include <array>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

#define endl '\n'
using LL=long long;

using Mat=array<array<LL,2>,2>;
int p;

Mat mul(Mat x,Mat y) {
    Mat res{};
    for(int i=0;i<2;i++) {
        for(int k=0;k<2;k++) {
            for(int j=0;j<2;j++) {
                res[i][j]=(res[i][j]+(x[i][k]*y[k][j]%p))%p;
            }
        }
    }
    return res;
}

Mat qpow(Mat x,int k) {
    Mat res{};
    res[0][0]=res[1][1]=1;
    while(k) {
        if(k&1) res=mul(res,x);
        k>>=1;
        x=mul(x,x);
    }
    return res;
}

void solve() {
    int k,t;
    cin>>p>>k>>t;
    LL sum1=(LL(p-1)*p/2-k)%p;
    LL sum2=((__int128(p-1)*(p)*(2*(p-1)+1)/6)%p);
    Mat dp{};
    dp[0][0]=0;
    dp[0][1]=-sum2+p;
    dp[1][0]=1;
    dp[1][1]=sum1;
    dp=qpow(dp,t-1);

    Mat res{};
    res[0][0]=1;
    res[0][1]=sum1;
    res=mul(res,dp);
    cout<<res[0][1]<<endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3460kb

input:

7 5 3

output:

1

result:

ok 1 number(s): "1"

Test #2:

score: 0
Accepted
time: 0ms
memory: 3408kb

input:

11 6 7

output:

3

result:

ok 1 number(s): "3"

Test #3:

score: 0
Accepted
time: 0ms
memory: 3532kb

input:

3 2 1

output:

1

result:

ok 1 number(s): "1"

Test #4:

score: 0
Accepted
time: 1ms
memory: 3464kb

input:

596620183 516846890 38276329

output:

135352707

result:

ok 1 number(s): "135352707"

Test #5:

score: 0
Accepted
time: 0ms
memory: 3460kb

input:

382744931 85302262 235496559

output:

14577469

result:

ok 1 number(s): "14577469"

Test #6:

score: 0
Accepted
time: 0ms
memory: 3424kb

input:

659446013 641119314 378275666

output:

290624162

result:

ok 1 number(s): "290624162"

Test #7:

score: 0
Accepted
time: 0ms
memory: 3460kb

input:

227 163 124

output:

189

result:

ok 1 number(s): "189"

Test #8:

score: 0
Accepted
time: 0ms
memory: 3400kb

input:

197 187 19

output:

62

result:

ok 1 number(s): "62"

Test #9:

score: 0
Accepted
time: 0ms
memory: 3428kb

input:

5 3 3

output:

3

result:

ok 1 number(s): "3"

Test #10:

score: 0
Accepted
time: 1ms
memory: 3424kb

input:

7 6 4

output:

1

result:

ok 1 number(s): "1"

Test #11:

score: 0
Accepted
time: 0ms
memory: 3488kb

input:

7 1 1

output:

6

result:

ok 1 number(s): "6"

Test #12:

score: 0
Accepted
time: 0ms
memory: 3472kb

input:

782371 586755 418517

output:

298550

result:

ok 1 number(s): "298550"

Test #13:

score: 0
Accepted
time: 0ms
memory: 3412kb

input:

181081 178315 76002

output:

125177

result:

ok 1 number(s): "125177"

Test #14:

score: 0
Accepted
time: 1ms
memory: 3532kb

input:

715019 492103 446729

output:

221541

result:

ok 1 number(s): "221541"

Test #15:

score: 0
Accepted
time: 0ms
memory: 3468kb

input:

238985261 199832612 162675695

output:

65826267

result:

ok 1 number(s): "65826267"

Test #16:

score: 0
Accepted
time: 0ms
memory: 3424kb

input:

129716453 10994076 62963738

output:

5186275

result:

ok 1 number(s): "5186275"

Test #17:

score: 0
Accepted
time: 0ms
memory: 3424kb

input:

962360593 652577122 345596237

output:

814039152

result:

ok 1 number(s): "814039152"

Test #18:

score: 0
Accepted
time: 0ms
memory: 3524kb

input:

871606937 839183139 754188014

output:

466391387

result:

ok 1 number(s): "466391387"

Test #19:

score: 0
Accepted
time: 0ms
memory: 3460kb

input:

275568091 270750503 241146839

output:

252569968

result:

ok 1 number(s): "252569968"

Test #20:

score: 0
Accepted
time: 0ms
memory: 3404kb

input:

562028473 111749710 450258818

output:

63116256

result:

ok 1 number(s): "63116256"