zoukankan      html  css  js  c++  java
  • ZR#1004

    ZR#1004

    解法:

    对于 $ (x^2 + y)^2 equiv (x^2 - y)^2 + 1 pmod p $
    化简并整理得 $ 4x^2y equiv 1 pmod p $
    即 $ 4x^2 $ 和 $ y $ 互为逆元时统计答案即可

    CODE:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    
    #define LL long long
    const int N = 1e5 + 100;
    
    inline LL fast_pow(LL a,LL b,LL p) {
    	LL ans = 1;
    	while(b) {
    		if(b & 1) ans = ans * a % p;
    		a = a * a % p;
    		b >>= 1; 
    	}
    	return ans % p;
    }
    map<LL,LL> vis;
    LL n,p,ans,a[N];
    
    int main() {
    	scanf("%lld%lld",&n,&p);
    	for(int i = 1 ; i <= n ; i++) {
    		scanf("%lld",&a[i]);
    		if(4 * a[i] % p * a[i] % p == 0) continue;
    		else vis[4 * a[i] % p * a[i] % p]++;
    	}
    	for(int i = 1 ; i <= n ; i++) {
    		LL inv = fast_pow(a[i],p - 2,p);
    		if(inv == 0) continue;
    		ans += vis[inv];
    		if(4 * a[i] % p * a[i] % p == inv) ans--;
    	}
    	printf("%lld
    ",ans);
    	//system("pause");
    	return 0;
    }
    
  • 相关阅读:
    Docker contanier comunication with route
    Event Sourcing
    Event Sourcing
    Event Sourcing
    .Net async
    安装Docker
    【JQuery】数据
    【JQuery】遍历
    【JQuery】css操作
    【JQuery】文档操作
  • 原文地址:https://www.cnblogs.com/Repulser/p/11709270.html
Copyright © 2011-2022 走看看