문제 설명
새로운 바이러스 때문에 "빨간 바이러스"로 알려진 비교의 확산과 전파 속도의 인터넷 '빨간 바이러스'의 의료 사회에서 발견,이 연구는 발견 한 바이러스의 가닥 DNA의 그 변종, 시토신 그 , 티민이 짝.
지금 길이 N의 문자열 만족의 상태가있다 :
; 만 캐릭터 A, B, C, D 네 개의 글자 (1)
, (2)는 항상 짝수가 발생 (또는 발생하지 않을 수있다)이
. (3) C 회 짝수 발생 (또는 발생하지 않을 수 있음),
조건을 만족하는 문자열의 개수를 계산하는 단계를 포함한다.
N = 2, 다음 조건 모두를 만족 문자열 6 :. BB, BD, DB, 경우 DD, AA, CC
이것 당신이 마지막 두 자리가 될 수 있습니다주는만큼, 매우 큰하고자하는 데이터입니다.
지금 길이 N의 문자열 만족의 상태가있다 :
; 만 캐릭터 A, B, C, D 네 개의 글자 (1)
, (2)는 항상 짝수가 발생 (또는 발생하지 않을 수있다)이
. (3) C 회 짝수 발생 (또는 발생하지 않을 수 있음),
조건을 만족하는 문자열의 개수를 계산하는 단계를 포함한다.
N = 2, 다음 조건 모두를 만족 문자열 6 :. BB, BD, DB, 경우 DD, AA, CC
이것 당신이 마지막 두 자리가 될 수 있습니다주는만큼, 매우 큰하고자하는 데이터입니다.
입력
각각 T의 제 1 입력 라인은 정수 시험 예 수가 다음 T 라인 데이터, 각 라인의 정수 N (1 <= N ^ 64 <2), 양 말단 T = 0을 나타낸다.
산출
마지막 두 각 테스트 케이스는, 출력 스트링의 개수는, 각 출력 빈 행 하였다.
샘플 입력
4 1 3 4 20 11 14 6 0 24
샘플 출력
사례 1 : 2 케이스 (2) : 케이스 3 (72) 32 케이스 4 : 0 1 케이스 56 케이스 2 : 케이스 3 (72) 56
참고 링크 : 이제 문제를 해결하는 것이 발견 뒷면에 ,,, 빠른 충분한 전력을 실행합니다.
빠른 미 : 빠른 전원
마지막 AC 코드 :
#INCLUDE <cstdio> 의 typedef 긴 긴 INT의 LL; INT fastmi (a LL, LL의 b) { //이 신속 B 승 찾을 LL = ANS 1. , 베이스 = a 및 그동안 (b) { IF (B . (1) ) ANS = (ANS * 자료 ) % 100 ; 베이스 = ( 베이스 * 자료 ) % 100 ; B >> = 1 ; // 여기 쓰기 B에주의하지 될 >> 1 후 무한 루프에있을 것 } 복귀 ANS; } INT 주 () { LL N, t, T; 반면 (는 scanf ( " %의 LLD " , T) && T) { t = T; 반면 (t-- ) { 는 scanf ( " %의 LLD " , N); 의 printf ( " 케이스 %의 LLD %의 LLD \ n " , TT의 (fastmi ( 4 , N- 1 ) + fastmi ( 2 , N- 1 )) % 100 ); } 의 printf ( " \ n " ); } 반환 0 ; }
요약 : 매우 복잡한 문제는, 그것을 해결하기가 매우 간단 나 수학의 힘을 다시 한 번 깨닫게 수 있습니다. . 법 fastmi 이유로서는 (4, N-1) + fastmi (2, N-1)? 난 단지 손 수에 의해, 당신은 법에 일관되게 테스트 케이스, 그래서 대담한 가정을 찾을 수 있다고 말할 수있다. 그 후, 일부는 포기,이 방법의 법칙의 수학적 유도에 의해 증명하지만, 유도 과정이 매우 복잡하고, 전원에 대한 신속한 솔루션 아이디어를 참조하십시오. 이 문제를 기록, 그냥 이렇게 아름다운 빠른 전원 알고리즘을 기억할 수 있었으면 좋겠어!