hdu3589Jacobi symbol(二次剩余 数论题)
来源:互联网 发布:linux apache配置php 编辑:程序博客网 时间:2024/04/28 22:48
本题的注意点:n=p1*p2*p3......Pm
解法:直接利用公式a^((p-1)/2)=(a/p)mod p 即可求解。
#include<stdio.h>#include<math.h>int flag[1005],p[500],a;int d[100];int init(int s){int len=0,tmp,h=sqrt(s+0.5); for(int i=0;p[i]<=h;i++)if(s%p[i]==0){if(a%p[i]==0)return -1;while(s%p[i]==0){ d[len++]=p[i];s/=p[i];}if(s==1)return len;}if(s>1){if(a%s==0)return -1;//这地方该开始忘了判断了,查错查了好久TTTd[len++]=s;}return len;}int getans(int x,int s){int tmp=s/2;__int64 ans=1,b=x;while(tmp>0){if(tmp&1)ans=ans*b%s;b=b*b%s;tmp/=2;}if(ans!=1)return -1;return 1;}int main(){int i,j,k=0,n;for(i=2;i<1000;i++){if(!flag[i]){p[k++]=i;for(j=i*i;j<1000;j+=i)flag[j]=1;}}while(scanf("%d%d",&a,&n)!=-1){int len=init(n);if(len==-1){printf("0\n");continue;}int ans=1; for(i=0;i<len;i++)ans*=getans(a,d[i]);printf("%d\n",ans);}return 0;}
- hdu3589Jacobi symbol(二次剩余 数论题)
- HDU 3589 Jacobi symbol 【二次剩余】
- 【二次剩余-欧拉准则】HDOJ Jacobi symbol 3589
- 二次剩余
- 二次剩余
- 二次剩余
- 二次剩余
- [二次剩余]求解二次剩余
- 数论题
- HDU 3589 二次剩余
- URAL 1132 二次剩余
- 二次剩余方程求解
- poj1808--二次剩余
- URAL 1132 二次剩余
- 关于二次剩余
- Ones数论题zju1889
- FZU 1607 数论题
- 悲剧的数论题
- DELL 灵越系列笔记本 1427 更换显示屏
- 单片机异步同步
- iOS image----- stretchableImageWithLeftCapWidth
- 堆排序
- win7如何关闭dep
- hdu3589Jacobi symbol(二次剩余 数论题)
- 算法中的容斥原理
- 新版新浪微博api使用问题及相关解决办法
- VC界面编程入门(一)
- android sqlite,大数据处理、同时读写
- poj 2870 Light Up (dfs+强剪枝)
- 发现了一款软件切换台
- ThinkPHP中URL解析原理,以及URL路由使用教程!
- poj1872A Dicey Problem(迭代加深dfs)