zoukankan      html  css  js  c++  java
  • poj 1808 Quadratic Residues 二次剩余

    /*
     * poj1808.c
     * Created on: 2011-10-12
     *  Author: bjfuwangzhu
     */
    /*
     *> 考虑形如x2≡n(mod m)的同余式,其中m > 1,(m,n)=1。
     *> 若此同余式有解,则n称为模m的二次剩余;若此同余式无解,则n称为模m的二次非剩余。
     *> 设p是一个奇素数,则模p的二次剩余和二次非剩余个数正好是“一半对一半”,
     *> 下表给出几个较小的素数模的二次剩余和非剩余:
     *>  > p    剩余    非剩余 > 3    1    2 > 5    1,4    2,3 > 7
     *>  1,2,4    3,5,6 > 11    1,3,4,5,9    2,6,7,8,10 > 13
     *>  1,3,4,9,11,12    2,5,6,7,8,11 > 此外,
     *>  如果n是模p的二次剩余,则N^((p-1)/2)≡1(mod p) 。如果n是模p的二次非剩余,
     *>  则N^((p-1)/2)≡-1(mod p) 。 */
    #include<stdio.h>
    #define LL long long
    int modular_exp(int a, int b, int c) {
    	LL res, temp;
    	res = 1 % c, temp = a % c;
    	while (b) {
    		if (b & 1) {
    			res = res * temp % c;
    		}
    		temp = temp * temp % c;
    		b >>= 1;
    	}
    	return (int) res;
    }
    void solve(int a, int p) {
    	a = (a % p + p) % p;
    	if (modular_exp(a, (p - 1) / 2, p) == 1) {
    		puts("1");
    		return;
    	}
    	puts("-1");
    }
    int main() {
    #ifndef ONLINE_JUDGE
    	freopen("data.in", "r", stdin);
    #endif
    	int t, i, a, p;
    	scanf("%d", &t);
    	for (i = 1; i <= t; i++) {
    		scanf("%d %d", &a, &p);
    		printf("Scenario #%d:\n", i);
    		solve(a, p);
    		printf("\n");
    	}
    	return 0;
    }
    
  • 相关阅读:
    poj3537--Crosses and Crosses
    poj3480--John
    poj2975--Nim
    poj2960 S-Nim
    poj2505-A multplication game
    Team Queue(POJ 2259)
    将caffemodel文件转换为Matlab可用的数据形式
    Invalid MEX-file: caffe.mexa64 的解决方案
    mongoDB-3.x启用认证
    mongoDB跨平台图形管理工具
  • 原文地址:https://www.cnblogs.com/xiaoxian1369/p/2208979.html
Copyright © 2011-2022 走看看