Abelian Period
来源:互联网 发布:ubuntu sd卡挂载 编辑:程序博客网 时间:2024/06/15 16:24
Problem Description
Let S be a number string, and occ(S,x) means the times that number x occurs in S .
i.e.S=(1,2,2,1,3),occ(S,1)=2,occ(S,2)=2,occ(S,3)=1 .
Stringu,w are matched if for each number i , occ(u,i)=occ(w,i) always holds.
i.e.(1,2,2,1,3)≈(1,3,2,1,2) .
LetS be a string. An integer k is a full Abelian period of S if S can be partitioned into several continous substrings of length k , and all of these substrings are matched with each other.
Now given a stringS , please find all of the numbers k that k is a full Abelian period of S .
i.e.
String
i.e.
Let
Now given a string
Input
The first line of the input contains an integer T(1≤T≤10) , denoting the number of test cases.
In each test case, the first line of the input contains an integern(n≤100000) , denoting the length of the string.
The second line of the input containsn integers S1,S2,S3,...,Sn(1≤Si≤n) , denoting the elements of the string.
In each test case, the first line of the input contains an integer
The second line of the input contains
Output
For each test case, print a line with several integers, denoting all of the number k . You should print them in increasing order.
Sample Input
265 4 4 4 5 486 5 6 5 6 5 5 6
Sample Output
3 62 4 8
Source
BestCoder Round #88
思路: 易知答案一定为n的因子,又因为n不是特别大,一一判断就行了;
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int a[110000],vis[110000];int temp[110000],temp1[110000];int n;int judge(int k){int cnt=0,i;for(i=0;i<k;i++)temp[cnt++]=a[i];sort(temp,temp+k);cnt=0;for(i=k;i<n;i++){temp1[cnt++]=a[i];if(cnt==k){sort(temp1,temp1+k);for(int j=0;j<k;j++){if(temp[j]==temp1[j]) continue;elsereturn 0;}cnt=0;}}return 1;}int main(){int t,i;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);//vis[a[i]]++;}int f=0;for(i=n;i>=1;i--){if(n%i==0){if(judge(n/i)==1){ if(f==0) printf("%d",n/i); else printf(" %d",n/i); f++;}}}printf("\n");}return 0;}
0 0
- Abelian Period
- Abelian Period
- 【HDU 5908 Abelian Period】
- 5908 Abelian Period
- HDU5908-Abelian Period
- hdu5908 Abelian Period (water)
- 【hdoj5908】Abelian Period
- HDU5908 Abelian Period
- HDU 5908 Abelian Period
- HDU 5908 Abelian Period
- hdoj-【5908 Abelian Period】
- 【HDOJ】5908 Abelian Period
- 【29.27%】【hdu 5908】Abelian Period
- hdu 5908 Abelian Period (枚举)
- hdu 5908 Abelian Period 模拟
- HDU-5908 Abelian Period(思维)
- HDU-5908 Abelian Period(思维)
- HDU:5908 Abelian Period(水题+技巧)
- aix 文件夹压缩
- 安装WinPython
- 有用的方法
- 二叉图(高级数据结构)
- jquery中prop()方法和attr()方法的区别浅析
- Abelian Period
- @Autowire注解与自动装配
- 制作北大青鸟视频宣传片列表页面
- 北大青鸟视频宣传片列表
- Abandoned country
- C++11 新特性
- 07上机练习4
- 谷歌的Gson消息传递数据格式封装及解析,跨平台必用知识
- CodeForces 732A Buy a Shovel