문제의 의미
"COFFEE"의 첫번째 스트링은 상기 제 2 캐릭터가 "CHICKEN"전면 (2)로부터 n 번째 문자열 (즉, S [N] =에서 S [N 서로 연결된 전방이다 -2] + S [N-1]이 s에 참고 [N-2]의 [N-1]), 쿼리의 앞에 어떤 (그렇지 않으면 연속 된 10 개 문자의 n의 k 번째 문자열에서 Q는 처음 )가 10 개 문자가 있지만 중지 문자열의 끝에 도달
1 ≤ N ≤ 5 0 0
1 ≤ K ≤ 분 { | S ( N ) | , (1) 0 1 2 } . (| | S ) 문자열의 길이를 나타낸다
문제 해결
암호
#INCLUDE <비트 / STDC ++ H.> 은 USING 공간 STD, 타입 정의 긴 롱 ; LL CONST LL + 1E12 INF = 10 ; // K 최대 1E12는 출력 (10)에 결합 된 값은 INF 수 + 10 1E12 CONST의 INT의 MAXN 5e2 + = 10 ; LL S [MAXN] 문자열 ANS1 = " COFFEE " , ANS2가 = " CHICKEN " ; 숯불 (N-LL, LL K) 해결 { IF (N - == 1. ) 복귀 ANS1의 [- K- 1이다. ]; // 어레이는 처음부터 0, 1, K에서 시작하므로 필요 -1 다른 IF(N - == 2 ) 복귀 ANS2의 [- K- 1이다. ]; IF (K> S [N- 2 ]) 복귀 해결 (N- . 1 , KS [N- 2 ]); 사람의 복귀 (N- 해결 2 , K) ; } INT 의 main () { / * 전처리 문자열 길이 * / S의 [ . 1 ] = 6. , S [ 2 ] = 7. ] 대 ( INT I = 3. , I는 <= 500 ; I는 ++ ) S [I] = S [I- 2] + S [I- 1이다. ] <S INF = I-? 2 ] + S [I- 1. ] INF; // 만약 S [I]가> + 10 1E12는 후면이 1E12 + 10 같게거나 오버플 INT의 T; CIN >> T; N- LL, K, 그동안 (T-- ) { CIN >> N- K] 에 대한 I는 K + <(I = K LL 10 && I <= S [N-] I을 ++ )는 // 문자열의 전체 길이 longlongs I)에 대한 그 주 (정지보다 10 이상으로하는 출력 COUT << (해결 N-, I); COUT << ENDL; } 리턴 0 ; }