How many
来源:互联网 发布:老mac升级系统 编辑:程序博客网 时间:2024/05/19 18:42
How many
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 974 Accepted Submission(s): 377
Problem Description
Give you n ( n < 10000) necklaces ,the length of necklace will not large than 100,tell me
How many kinds of necklaces total have.(if two necklaces can equal by rotating ,we say the two necklaces are some).
For example 0110 express a necklace, you can rotate it. 0110 -> 1100 -> 1001 -> 0011->0110.
How many kinds of necklaces total have.(if two necklaces can equal by rotating ,we say the two necklaces are some).
For example 0110 express a necklace, you can rotate it. 0110 -> 1100 -> 1001 -> 0011->0110.
Input
The input contains multiple test cases.
Each test case include: first one integers n. (2<=n<=10000)
Next n lines follow. Each line has a equal length character string. (string only include '0','1').
Each test case include: first one integers n. (2<=n<=10000)
Next n lines follow. Each line has a equal length character string. (string only include '0','1').
Output
For each test case output a integer , how many different necklaces.
Sample Input
4011011001001001141010010110000001
Sample Output
12先用最小表示法将字符串还原到以最小字典序循环的串,然后把它放到set中进行判重就可以了。。。# include<iostream># include<stdio.h># include<string># include<string.h># include<set>using namespace std;int min(int i,int j){return i>j?j:i;}inline int getmin(string &s){ int i=0,j=1,k=0; int len = s.length(); while(i<len && j<len && k<len) { int t = s[(i+k)%len] - s[(j+k)%len]; if(!t) k++; else { if(t>0) i = i+k+1; else j = j+k+1; if(i == j) j++; k = 0; } } return min(i,j);}int main(){ int n; string s,s1; while(~scanf("%d",&n)) { int num = 0; set<string> set1; set<string>::iterator it; for(int i=0;i<n;++i) { cin>>s; int j = getmin(s); s1.assign(s,j,s.length()-j); if(j) s1.append(s,0,j); if(!set1.count(s1)) { num++; set1.insert(s1); } } cout<<num<<endl; } return 0;}
- How many
- How many zeros and how many digits?
- How many zeros and how many digits?
- how many java objects?
- How many的用法
- How many N
- How many different numbers
- How many fibs
- hdu1978 How many ways
- PKU2413 how many fibs
- How Many Fibs?
- How Many Tables
- HDOJ How Many Tables
- hdu 2609 How Many
- How many ways??
- How many ways
- UVa10303 - How Many Trees?
- UVa10183 - How Many Fibs?
- div仿框架布局之典型的两栏布局
- 大话设计模式 状态模式
- LNMP一键安装包的Nginx 502 Bad Gateway错误可能原因及解决方法
- C#中htmlencode与InnerHtml的区别
- java学习计划
- How many
- 4、backbone的collection实例
- 向量与动态数组的存储速度比较
- 动态网页与静态网页
- 几种location.href的区别,留待查找
- Linux从用户层到内核层系列 - TCP/IP协议栈部分系列5:内核定时器的定义与使用及STP定时器
- AS3.0 获取场景按钮
- C++ STL中判断list为空,size()==0和empty()有什么区别
- git 工作区、暂存区、存储库