题目链接:http://poj.org/problem?id=2154

题意:n 种颜色的珠子构成一个长为 n 的环,每种颜色珠子个数无限,也不一定要用上所有颜色,旋转可以得到状态只算一种,问有多少种不同的情况。

思路:polya 模板,不过数据比较大,需要用欧拉优化。

代码:

 #include<iostream>
#include <stdlib.h>
#include <algorithm>
#include <stdio.h>
#include<vector>
using namespace std; const int MAXN = 1e5 + ;
int isprime[MAXN];
int prime[MAXN];
int num, n, p; void getprime(void){
num = ;
for(int i = ; i <= MAXN; i++)if(!isprime[i]){
prime[num++] = i;
for(int j = ; j * i <= MAXN; j++){
isprime[i * j] = ;
}
}
} int euler(int x){
int res = x;
for(int i = ; i < num && prime[i]*prime[i] <= x; i++){
if(x % prime[i] == ){
res = res / prime[i] * (prime[i] - );
while(x % prime[i] == ){
x /= prime[i];
}
}
}
if(x > ) res = res / x * (x - );
return res;
} int expmod(int a, int b, int mod){
int ret = ;
a = a % mod;
while(b > ){
if(b & )ret = (ret * a) % mod;
a = (a * a) % mod;
b >>= ;
}
return ret;
} int main(void){
int t;
getprime();
scanf("%d", &t);
while(t--){
scanf("%d%d", &n, &p);
int ans = , i;
for(i = ; i * i < n; i++)if(n % i == ){
ans = (ans + euler(i) % p * expmod(n, n / i - , p) + euler(n / i) % p * expmod(n, i - , p)) % p;; //这里的i-1代表已经除以整个置换数n了,原本是expmod(n,i),最后要除以n的,
}
if(i * i == n)
ans = (ans + euler(i) * expmod(n, i - , p)) % p;
cout << ans << endl;
}
return ;
}

最新文章

  1. [转]jquery append 动态添加的元素事件on 不起作用的解决方案
  2. iOS duplicate symbol 变量 in 类名 报错
  3. HDU5670Machine(抽象进制)
  4. 转载Repository 和Unit of work的使用说明
  5. html_table标签和from表单标签小试手
  6. 【转】OpenGL基础图形编程(二)
  7. oracle生成随机数
  8. js实现文字逐个显示
  9. Oracle教程之学习笔记
  10. ERP中的地区管理
  11. 补习系列(8)-springboot 单元测试之道
  12. 一起学Python——数据类型详解
  13. Huginn定时时间不准确或延后问题
  14. WebStorm 破解方法
  15. 【Go】优雅的读取http请求或响应的数据-续
  16. 组建自己的局域网(可以将PC机实现为服务器)
  17. idea热部署+自动编译
  18. NUC972---Linux驱动开发
  19. PHP图片裁剪与缩放示例(无损裁剪图片)
  20. 使用动态跟踪技术SystemTap监控MySQL、Oracle性能

热门文章

  1. Windows可信任路径代码执行漏洞
  2. activemq artemis安装运行及其在springboot中的使用
  3. Android 4 学习(10):Adapters简介
  4. Java调用Webservice(asmx)的几个例子
  5. 201671010140. 2016-2017-2 《Java程序设计》java学习第六章
  6. 06-Location详解之精准匹配
  7. 551. Student Attendance Record I 从字符串判断学生考勤
  8. mybatis 框架 的简单使用
  9. LinkedHashMap原理以及场景
  10. Java 5新特性 for each 和Iterator的选择