Arif in Dhaka (First Love Part 2) UVA - 10294(Polya定理)
这题和POJ-1286一样
题意:
给出t种颜色的n颗珠子 (每种颜色的珠子个数无限制,但总数必须是n), 求能制作出项链和手镯的个数
注意手镯可以翻转和旋转 而 项练只能旋转
解析:
注意Polya定理:
等价类的个数等于所有的置换f的km(f)的平均数
先考虑旋转,一共有n种情况,旋转1颗珠子构成循环,2颗,3颗·····n颗,那么对于旋转i颗珠子有gcd(i,n)个循环,那么根据Polya定理 置换的不动点的个数为
a = sum(tgcd(i, n));
为什么又gcd(i, n)个循环。。。想一下 i,2i,3i···这些点的颜色相同 我们把颜色相同的归为一类 称为一个循环,那么如果i是n的因子,在这n颗珠子里就有i种颜色
即为1 到 i 这i种 所以又i个循环 如果i不是n的因子 那么我们要找到一个最大的 即为gcd(i, n)
在考虑翻转,翻转的话只能是对称轴两边的点构成循环 或者在对称轴上的点自己构成循环,而对称轴可以在点上 也可以不在点上 这两种情况看 五边形 和 六边形就好了,画一下 就能看出来,

#include <iostream>
#include <cstdio>
#include <sstream>
#include <cstring>
#include <map>
#include <cctype>
#include <set>
#include <vector>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <bitset>
#define rap(i, a, n) for(int i=a; i<=n; i++)
#define rep(i, a, n) for(int i=a; i<n; i++)
#define lap(i, a, n) for(int i=n; i>=a; i--)
#define lep(i, a, n) for(int i=n; i>a; i--)
#define rd(a) scanf("%d", &a)
#define rlld(a) scanf("%lld", &a)
#define rc(a) scanf("%c", &a)
#define rs(a) scanf("%s", a)
#define pd(a) printf("%d\n", a);
#define plld(a) printf("%lld\n", a);
#define pc(a) printf("%c\n", a);
#define ps(a) printf("%s\n", a);
#define MOD 2018
#define LL long long
#define ULL unsigned long long
#define Pair pair<int, int>
#define mem(a, b) memset(a, b, sizeof(a))
#define _ ios_base::sync_with_stdio(0),cin.tie(0)
//freopen("1.txt", "r", stdin);
using namespace std;
const int maxn = , INF = 0x7fffffff, LL_INF = 0x7fffffffffffffff; LL qp(LL a, LL b)
{
LL res = ;
while(b)
{
if(b & ) res = res * a;
a = a * a;
b >>= ;
}
return res;
} int main()
{
int n, t;
while(cin >> n >> t)
{
LL a = , b = ;
for(int i = ; i <= n-; i++)
{
a += qp(t, __gcd(i, n));
}
if(n & ) b = n * qp(t, (n + ) / );
else b = n / * (qp(t, n / + ) + qp(t, n / ));
cout << a / n << " " << (a + b) / / n << endl; } return ;
}
Arif in Dhaka (First Love Part 2) UVA - 10294(Polya定理)的更多相关文章
- 项链与手镯Uva 10294——Polya定理
题意 项链和手镯都是由若干珠子串成的环形首饰,区别在于手环可以翻转,但项链不可以. 输入整数 $n$ 和 $t$,输出用 $t$ 中颜色 $n$ 颗珠子能制作成的项链和手镯的个数.($1\leq n ...
- UVa 10294(polya 翻转与旋转)
Arif in Dhaka(First Love Part 2) Input: standard input Output: standard output Time Limit: 2 seconds ...
- UVA10294 Arif in Dhaka (First Love Part 2) —— 置换、poyla定理
题目链接:https://vjudge.net/problem/UVA-10294 题解: 白书P146~147. 为什么旋转i个间距,就有gcd(i,n)个循环,且每个循环有n/gcd(i,n)个元 ...
- Uva 10294 Polya
#include <bits/stdc++.h> using namespace std; typedef long long LL; int gcd(int a,int b) { ? a ...
- 【uva 10294】 Arif in Dhaka (First Love Part 2) (置换,burnside引理|polya定理)
题目来源:UVa 10294 Arif in Dhaka (First Love Part 2) 题意:n颗珠子t种颜色 求有多少种项链和手镯 项链不可以翻转 手镯可以翻转 [分析] 要开始学置换了. ...
- [Uva10294]Arif in Dhaka
[Uva10294]Arif in Dhaka 标签: 置换 Burnside引理 题目链接 题意 有很多个珠子穿成环形首饰,手镯可以翻转和旋转,项链只能旋转.(翻转过的手镯相同,而项链不同) 有n个 ...
- UVA 10294 项链与手镯 (置换)
Burnside引理:对于一个置换\(f\), 若一个着色方案\(s\)经过置换后不变,称\(s\)为\(f\)的不动点.将\(f\)的不动点数目记为\(C(f)\), 则可以证明等价类数目为\(C( ...
- UVa 10294 (Pólya计数) Arif in Dhaka (First Love Part 2)
Burnside定理:若一个着色方案s经过置换f后不变,称s为f的不动点,将置换f的不动点的数目记作C(f).等价类的数目等于所有C(f)的平均值. 一个项链,一个手镯,区别在于一个能翻转一个不能,用 ...
- Uva 10294 Arif in Dhaka (First Love Part 2)
Description 现有一颗含\(N\)个珠子的项链,每个珠子有\(t\)种不同的染色.现求在旋转置换下有多少种本质不同的项链,在旋转和翻转置换下有多少种本质不同的项链.\(N < 51,t ...
随机推荐
- Emacs 番茄钟 pomidor
Windows 10 pomidor:https://github.com/TatriX/pomidor alert :https://github.com/jwiegley/alert toaste ...
- C#中用HttpWebRequest中发送GET/HTTP/HTTPS请求 (转载)
这个需求来自于我最近练手的一个项目,在项目中我需要将一些自己发表的和收藏整理的网文集中到一个地方存放,如果全部采用手工操作工作量大而且繁琐,因此周公决定利用C#来实现.在很多地方都需要验证用户身份才可 ...
- R绘图 第十二篇:散点图(高级)
散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过3D图形或气泡来展示,多个变量之间的两两关系可以通过散点图矩阵来展示. 一,添加了最佳拟合曲线的散点图 使用基础函数plot(x,y)来 ...
- [C#]SQLite执行效率优化结论
一.如要使用SQLite,可以从Visual Studio中的“程序包管理器控制台”输入以下命令完成安装: PM> Install-Package System.Data.SQLite.Core ...
- Linux下针对服务器网卡流量和磁盘的监控脚本
1)实时监控网卡流量的通用脚本: [root@ceph-node1 ~]# cat /root/net_monit.sh #!/bin/bash PATH=/bin:/usr/bin:/sbin:/u ...
- keepalived概述
一.HA集群中的相关术语 1.节点(node) 运行HA进程的一个独立主机,称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和高可用软件服务,在高可用集群中,节点有主次之分,分别称之为主节 ...
- qa_model
[code=python] import os import sys import time import numpy import shelve import theano import thean ...
- 个人博客作业_week7
心得 在为期将近一个月的团队编程中,给我感受最深的是敏捷开发和团队中队员之间的互补. 在最初的软件开发中,由于以前没有这方面的经验,所以并没有很大的进展.在慢慢过度中,我们找到了自己的节奏感,大家各自 ...
- 软件工程驻足篇章:第十七周和BugPhobia团队漫长的道别
0x01 :序言 I am a slow walker, but I never walk backwards. 成长于被爱,学着爱人 成长的故事 也是年少的星期六结束的故事 就仿佛我和BugPhob ...
- Can't find model 'en'
在使用 nlp = spacy.load("en") 报错OSError: Can't find model 'en' 应该用 python -m spacy download e ...