日常训练 20170606 魔法手镯
来源:互联网 发布:淘宝商品编辑 编辑:程序博客网 时间:2024/04/27 13:43
题目描述
Ginny 的生日马上就来了。魔法大叔 Herry 准备给他的新妹子一个生日礼物。礼物是由
Herry想知道,究竟能有多少不同的手镯,将这个结果
输入格式
输入包含多组数据。第一行一个正整数
接下来的数据分为
接下来
Burnside引理裸题,另外要求满足一定限定条件的
#include<bits/stdc++.h>typedef long long ll;const int P = 9973;int Case, n, m, k, u, v, d[(int)1e5];struct matrix{ int a[11][11];};matrix e, full;matrix operator * (const matrix &a, const matrix &b) { matrix c; memset(&c, 0, sizeof(c)); for (int i=1; i <= m; i++) for (int j=1; j <= m; j++) { for (int k=1; k <= m; k++) c.a[i][j] += a.a[i][k] * b.a[k][j]; c.a[i][j] %= P; } return c;}matrix pow(matrix x, int k) { matrix ret = e; for (; k; k >>= 1, x = x * x) if (k & 1) ret = ret * x; return ret;}int phi(int x) { int ret = x; for (int i=2; i * i <= x; i++) if (x % i == 0) { ret = ret / i * (i - 1); while (x % i == 0) x /= i; } if (x > 1) ret = ret / x * (x - 1); return ret;}ll pow(ll x, int k) { ll ret = 1; for (; k; k >>= 1, x = x * x % P) if (k & 1) ret = ret * x % P; return ret;}ll inv (ll x) {return pow(x, P - 2);}int main() { scanf("%d", &Case); for (int i=1; i <= 10; i++) e.a[i][i] = 1; for (int i=1; i <= 10; i++) for (int j=1; j <= 10; j++) full.a[i][j] = 1; while (Case--) { scanf("%d%d%d", &n, &m, &k); matrix tra = full; while (k--) scanf("%d%d", &u, &v), tra.a[u][v] = 0, tra.a[v][u] = 0; matrix cp = tra; ll ans = 0; int kind = 0; for (int i=1; i * i <= n; i++) if (n % i == 0) d[++kind] = i, d[++kind] = n / i; if (kind >= 2 && d[kind] == d[kind - 1]) kind--; for (int k=1; k <= kind; k++) if (n % d[k] == 0) { matrix f = e * pow(tra, n / d[k] - 1); ll tans = 0; for (int i=1; i <= m; i++) for (int j=1; j <= m; j++) if (cp.a[i][j]) tans += f.a[i][j]; ans = (ans + tans * phi(d[k])); } printf("%lld\n", ans * inv(n) % P); } return 0;}
阅读全文
0 0
- 日常训练 20170606 魔法手镯
- [日常训练] 魔法传输
- 魔法训练
- 日常训练 20170606 极地旅行社
- HEU日常训练10.02
- 日常训练小结
- 日常训练20161012 道路网
- 日常训练20161012 醉酒
- 日常训练20161014 跟踪
- 日常训练20161018 证据
- 日常训练20161018 subset
- 日常训练 平均数
- 日常训练 水箱
- 日常训练 棋盘游走
- 日常训练 20170531 数字
- 日常训练 20170531 探险
- 日常训练 20170531 矩阵
- 日常训练 20170602 Book
- java中几种常见的排序算法
- JS判断页面由哪个APP打开
- gcc LLVM Clang 编译器 IDE集成开发环境
- 金蝶EAS,打开新页面,传递参数,KDTable表格数据填充
- android 单点登录功能
- 日常训练 20170606 魔法手镯
- ffmpeg常用基本命令(转)
- nginx中的location
- git 多分支问题
- soap绑定(转自w3c)
- mysql应用过程中出现的主键重复的问题
- 面向对象的三大特性
- 20170606_WPSC++实习_HR面
- springboot下面thymeleaf和freemarker两种共存,并且设置thymeleaf的优先级高于freemarker