Submission #1112534


Source Code Expand

#include <iostream>

int pow_mod(int x, int n, int mod) {
    int ans = 1;
    
    while(n != 0) {
        if(n & 1)
            ans = (ans * x) % mod;
        
        x = (x*x) % mod;
        n >>= 1;
    }
    
    return ans;
}

int count[10010];

int main() {
    int p, n;
    
    std::cin >> p >> n;
    
    for(int i = 0; i < p; ++i) {
        ++count[pow_mod(i, n, p)];
    }
    
    int zero = 0;
    int cnt = 0;
    for(int i = 0; i < p; ++i) {
        zero += count[0] * count[i] * count[(p - i) % p];
        
        if(i > 0 && count[i] > 0)
            ++cnt;
    }
    
    int one = 0;
    for(int i = 0; i < p; ++i) { // x
        one += count[1] * count[i] * count[(p + 1 - i) % p];
    }
    
    std::cout << zero + one * cnt << std::endl;
}

Submission Info

Submission Time
Task fermat - フェルマー方程式 (Fermat)
User tsuzu
Language C++14 (GCC 5.4.1)
Score 100
Code Size 810 Byte
Status AC
Exec Time 2 ms
Memory 256 KB

Judge Result

Set Name Set01 Set02 Set03 Set04 Set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
Set01 01
Set02 02
Set03 03
Set04 04
Set05 05
Case Name Status Exec Time Memory
01 AC 1 ms 256 KB
02 AC 1 ms 256 KB
03 AC 1 ms 256 KB
04 AC 2 ms 256 KB
05 AC 2 ms 256 KB