1. 程式人生 > >hdu 1439 Cipher(置換群)

hdu 1439 Cipher(置換群)

hid blog splay sca gif int def 題解 php

題目鏈接:hdu 1439 Cipher

題意:

給你一個n元的key,讓你將一個字符串置換k次。

題解:

暴力將每個數的循環數找到,然後k%後對應填字符就行了。

技術分享
 1 #include<bits/stdc++.h>
 2 #define F(i,a,b) for(int i=a;i<=b;++i)
 3 using namespace std;
 4 
 5 const int N=300;
 6 char s[N],ans[N];
 7 int a[N],rep[N],n,k;
 8 
 9 int main()
10 {
11     while(scanf("%d",&n),n)
12 { 13 F(i,1,n)scanf("%d",a+i),rep[i]=0; 14 F(i,1,n) 15 { 16 int now=i; 17 while(now!=i||!rep[i])now=a[now],rep[i]++; 18 } 19 while(scanf("%d",&k),k) 20 { 21 getchar(); 22 gets(s+1); 23 int
flag=0; 24 F(i,1,n) 25 { 26 if(s[i]==0)flag=1; 27 int now=i,tmp=k%rep[i]; 28 while(tmp--)now=a[now]; 29 if(flag)ans[now]= ; 30 else ans[now]=s[i]; 31 } 32 ans[n+1]=0; 33 puts(ans+1
); 34 } 35 puts(""); 36 } 37 return 0; 38 }
View Code

hdu 1439 Cipher(置換群)