알리바바 도움 전투 SARS (어려운)
- 33.29 %
현재, 과학자들에 의해 발견 된 세계에서 사스 바이러스, 바이러스 및 DNA, 시토신, 티민의 그 변종의 단일 가닥 쌍있다. 이 기능이 너무 약한 때문에 이것은 중요한 발견,하지만 바이러스의 가장 중요한 특징이지만.
이 문제를 해결하는 사고 능력과 과학 기술의 절차, 바이러스, 질병 관리 알리바바 그룹 협력 CN 센터의 특성을 찾기 위해. 질병 통제는 사스 바이러스의 DNA 서열의 수있을 수 있습니다이 기능에서 공부하는 알리바바 지금 당신에게 CN 센터에서 특별한 SARS 선임 연구원을 임명. 더 정확하게, 당신은 다음의 모든 조건을 만족 길이 있습니다 계산해야하는 n 개의 문자열의 수 n :
- A, T, C, G 성분 만 문자열
- A는 항상 짝수가 발생 (또는 발생하지 않을 수 있음)
- C는 시간의 짝수 발생 (또는 표시되지 않을 수도 있습니다)
경우 N-2 = N- = 2, 다음 조건 모두를 만족 문자열이다 (6). 6 :
TT, TG, GT, GG, AA, CC.
참고 :이 숫자가 매우 클 수 있기 때문에, 당신은 단지 줄 필요가 10 ^ 9 + 7 1. 0 9 + 결과 모듈 7.
입력 형식
입력 문서의 복수 준다 N- N-한다. 마지막 숫자 0 제로는 종료되었습니다.
출력 형식
각 입력 파일의 n 개의 수 (n)의 조건을 만족하는 출력 문자열 10 ^ 9 + 7 . 1 개 0 9 + 7 모듈 결과.
데이터 범위
n \ ^ {10 (10 ^ 5)} , N ≤ 1 0 ( 1 0 5 )
샘플 입력
1 2 3 100 0
샘플 출력
2 . 6 (20)는 (113) 046 (907)는
DFS를 사용하여 다시 법의 실행을 찾을 수 : 2 ^ N + 4 ^ n은
다음 많은 수를 처리하는 모듈로, 문자열을 읽어되어 페르마의 작은 정리 + 오일러 내림차순.
유사한 양식 + 오일러보다가 내려 많은 수를 취할 4,704 합 - HDU을
#INCLUDE <비트 / stdc ++ H.> #DEFINE MOD 1,000,000,007 사용 스페이스 성병; 타입 정의 긴 긴 LL; 문자 S [ 100005 ]; {QMOD (LL A, B의 LL) LL LL ANS = 1 ; % = MOD; 반면 (b) { 경우 (B & 1 ) = ANS ANS *는 % MOD; B >> = 1 ; A *에게 %를 = MOD; } 반환 ANS; } INT 의 main () { INT의 N, LEN, I; 반면 (는 scanf ( " %의 S ' , S) && S [ 0 ]! = ' 0 ' ) { LL의 C = 0 ; LEN = 나 strlen (S); 대 (I = 0 ; I <렌; 내가 ++ ) { INT X가 S [I] - ' 0 ' ; C = C * 10 + (X); 경우 (c> 1,000,000,006 )의 C % = 1,000,000,006 ; } (C) = ((C- 1 ) % 1,000,000,006 +1,000,000,006 ) % 1000000006 ; 의 printf ( " % LLD \ 없음 " (QMOD ( 2 , c) + QMOD ( 4 , c)) % MOD); } 반환 0 ; }