Cipher--POJ 1026
8352 단어 poj
2. 문제 풀이 사고방식: (1) n개의 인코딩을 입력하는 순서에 따라 각각 한 문자의 교환 주기를 기록하고Cy[i]로 기록한다.(2) 인코딩 횟수 k는Cy[i]에 대해 각각 나머지를 구하고 나머지는 이 문자의 k회 교체 후의 위치이다.
3. 주의사항: 전체 시퀀스에 주기를 구할 수 없음(이 주기는 n개의 단일 문자 주기의 최소 공배수)이다. 그렇지 않으면 TLE가 된다.
4. 실현 방법:
#include
<
iostream
>
#include
<
string
>
using
namespace
std;
int
n;
int
pos[
210
],Cy[
210
];
void
Solve()
{
int
k,i,j,m,len;
char
str[
210
],ans[
210
];
while
(cin
>>
k
&&
k)
{
getchar();
gets(str);
len
=
strlen(str);
while
(len
<
n)
{
str[len
++
]
=
'
'
;
}
str[len]
=
'
\0
'
;
for
(i
=
0
;i
<
n;i
++
)
{
m
=
k
%
Cy[i];
j
=
i;
while
(m
--
)
j
=
pos[j]
-
1
;
ans[j]
=
str[i];
}
ans[n]
=
'
\0
'
;
cout
<<
ans
<<
endl;
}
}
int
main()
{
int
i,j;
while
(cin
>>
n
&&
n)
{
memset(Cy,
0
,
sizeof
(Cy));
for
(i
=
0
;i
<
n;i
++
)
cin
>>
pos[i];
for
(i
=
0
;i
<
n;i
++
)
{
j
=
i;
while
(pos[j]
!=
i
+
1
)
{
j
=
pos[j]
-
1
;
Cy[i]
++
;
}
Cy[i]
++
;
}
Solve();
cout
<<
endl;
}
return
0
;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
POJ3071: Football(확률 DP)Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, …, 2n. After n rounds, only one team...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.