你随便写一下出来,发现polya原理的式子里面好多gcd是相同的,gcd(n,i)=k可以改写成gcd(n/k,i/k)=1,也就是说指数为k的项的个数为phi(n/k),就很好求了,最后除的那个n直接放到指数上即可,没必要用逆元。

import java.util.*;
import java.io.*; public class Main {
public static int phi(int n){
int ans=n;
for(int i=2;i*i<=n;++i){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0){
n/=i;
}
}
}
if(n>1){
ans=ans/n*(n-1);
}
return ans;
}
public static int Quick_Pow(int x,int p,int MOD){
if(p==0){
return 1;
}
int ans=Quick_Pow(x,p>>1,MOD);
ans=(ans*ans)%MOD;
if((p&1)==1){
ans=(x%MOD*ans)%MOD;
}
return ans;
}
public static void main(String[] argc){
int T,n,P;
Scanner sc = new Scanner (new BufferedInputStream(System.in));
T=sc.nextInt();
for(int zu=1;zu<=T;++zu){
int ans=0;
n=sc.nextInt();
P=sc.nextInt();
for(int i=1;i*i<=n;++i){
if(n%i==0){
ans=(ans+((phi(n/i)%P)*Quick_Pow(n,i-1,P))%P)%P;
// System.out.printf("Test:%d\n",ans);
if(i*i!=n){
ans=(ans+((phi(i)%P)*Quick_Pow(n,n/i-1,P))%P)%P;
// System.out.printf("Test:%d\n",ans);
}
}
}
System.out.println(ans);
}
sc.close();
}
}

最新文章

  1. bootstrap自学总结不间断更新
  2. Tastypie 学习笔记
  3. 计算字符数组长度,用strlen 与 sizeof 的原理与区别
  4. myeclipse启动tomcat会出现 a java exception has occured错误 的解决方法
  5. hbase shell中log4j重复问题
  6. DIV指令一般用法
  7. iOS开发中常用第三方库的使用和配置-GDataXML
  8. C语言控制语句总结(if else for switch while break continue)
  9. EDMX更新实体后出现键值映射问题
  10. [转]最详细的 HTTPS 科普扫盲帖
  11. mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库
  12. Java探秘之基本数据类型和包装类(int,Integer)(一)
  13. BZOJ 4553 Tjoi2016&amp;Heoi2016 序列
  14. laypage分页控件使用方法
  15. [转] golang中struct、json、map互相转化
  16. 【Data Structure】-NO.117.DS.1 -【Tree-23树】
  17. maven的build
  18. 吴伯凡:VUCA时代的自我迭代
  19. Excel lastindex of a substring
  20. postgresql逻辑结构--用户及权限管理(七)

热门文章

  1. js_数组去重效率对比
  2. 【tomcat】手动部署动态JavaWeb项目到tomcat
  3. linux 服务简介
  4. 安全测试===burpsuit指南
  5. 64_d1
  6. rhel-server srpms iso
  7. 在LINUX平台上手动创建多个实例(oracle11g)
  8. Bzoj-2301 [HAOI2011]Problem b 容斥原理,Mobius反演,分块
  9. 2017多校第7场 HDU 6129 Just do it 找规律
  10. Python——turtle生成图片保存