주제 링크 : https://codeforc.es/contest/1202/problem/D
질문의 의미 :
그래서 137 713 713 (단 함유 1,3,7) .....하면 문자열 있도록에게 수 (n)를 (<= 1E9)을 수득 구성된 다른 서브 - 시퀀스들 1337의 수는 N-이고 , 캐릭터로부터 구성하는 것이 될 수 없다 길이 (<= 1E5) .
아이디어 :
구성 문제의 유형은 I하려고 첫 번째 방법을 수정해야 (2) C + C (2, b) + C (C 2) + ... = N 형태하지 알았다. 나중에 여전히 나는 다른 사람의 코드를 읽을
는 C (2, m) + K 조성물 n의 형태 이후, 두 n 개의 * (N-1) 및 (N-1) * (N -2) 수는 (차이보다 크지 2 * 31,622 ) 때문에 루트 1E9는 이다 31622 ;
따라서 전체 길이보다 크지 2 * 31622 + (최대 길이 인 K) 31 622 (최대 길이 m 인) 정확히 94,868 <1E5.
그래서 응답은 133 + 7 (K 번째의) + 3333 (두 M-2) ... (7)
1 #DEFINE IOS가 ios_base :: sync_with_stdio (0); cin.tie (0); 2 #INCLUDE <cstdio> // sprintf와 islower와 isupper 3 #INCLUDE <cstdlib> // malloc에 출사 strcat와의 itoa 시스템 ( "CLS") 4 #INCLUDE <iostream> // 쌍 5 #INCLUDE <fstream> 6 #INCLUDE <비트 세트> 7 // #INCLUDE <지도> 8 // #INCLUDE <unordered_map도> https://codeforc.es/contest/1202/problem/D 9 #INCLUDE <벡터> 10 #INCLUDE <적층> 11 #INCLUDE < 설정 > #INCLUDE < 문자열 .H> // 않는 strstr SUBSTR 13 #INCLUDE < 문자열 > 14 #INCLUDE <time.h> // 부터 srand (((서명) 시간 (NULL))); 시드 랜드 N = () 10 % - 0 ~ 9; 15 #INCLUDE <cmath> 16 #INCLUDE <양단> 17 #INCLUDE <큐> // priority_queue <INT 벡터 <INT> 큰 <INT>> Q; // 이하 18 #INCLUDE <벡터> // emplace_back 19 // #INCLUDE <math.h> 20 // #INCLUDE <WINDOWS.H> // (a하는 LEN +) 역방향 // ~! ~! 바닥 21 #INCLUDE <알고리즘> //이 정렬 + 고유 : SZ = 고유 (B + 1, B + N + 1) - (b + 1) + nth_element (제 1, 제 n이 마지막 비교) 22 이용한 스페이스 성병; // next_permutation (A + 1, A + N + 1); // prev_permutation 23 #DEFINE (a, b는, c)에 대해 (;은 <= C ++ A A = B를하는 int 레지스터) FO 24 #DEFINE의 FR을 (A, B, C)에 대해 (A = B를하는 int 레지스터; A> = C를 - a) 25 #DEFINE MEM (a, b)가 memset (A, B를 sizeof (a)) 26 #DEFINE PR의 printf 27 #DEFINE SC는 scanf 28 #DEFINE LS의 RT 1 << 29 #DEFINE 중계국 RT << 1 | 1 30 보이드 swapp ( INT & A, INT 및 b); 31 번 fabss ( 더블 a); 32 INT의 맥스 ( int로 하는 INT의 b); 33 INT 미네소타 ( INT A, INT의 b); 34 INT Del_bit_1 ( INT의 N); 35 INT lowbit ( INT N); 36 의 INT abss ( INT a); 37 // CONST 긴 길이 = INF (1LL << 60); 38 CONST 이중 E =2.718281828 ; 39 CONST 이중 PI ACOS = (- 1.0 ); 40 CONST의 INT의 INF = ( 1 << 29 ); 41 CONST 이중 ESP 1e- = 9 ; 42 CONST INT 개조 = ( INT ) + 1E9 (7) ; 43 CONST의 INT의 N = ( INT ) + 1E6 (10) ; 44 45 INT ) (주 46 { 47 INT의 T; 48 SC ( " % d의" & T) (49) 동안 (T-- ) 50 { 51 INT N; 52 SC ( " %의 D ' , N); // C (2, N) + K, 53 INT K = 0 , m = 0 , (54) 에 대해 ( int로 , I> = 1은 N = 1 -; I) 55 { 56 K = N- I] (57) 의 INT J = ( INT ) SQRT ( 2 * I) 58 긴 긴온도 = j 개의 * (j + 1 ); (59) 의 경우 ( 2 * I == 온도) 60 { 61 , M = J + 1 ; (62) 휴식 ; 63 } 64 } 65 PR ( " 133 " ); 66 FO (I, 1 , K) (67) PR ( " 7 " ); 68 FO (I, 1 , M- 2 ) (69) PR ( " 3" ); 70 PR ( " 7 " ); 71 COUT << ENDL; 72 } 73 반환 0 , 74 } 75 76 / * ********************* ************************************************** ************* * / 77 78 INT의 맥스는 ( int로 를 INT의 b) 79 { 80 리턴 A> B? A : B; 81 } 82 83 공극 swapp ( INT & AINT 및 b) 84 { 85 ^ = ^ B = A ^ = B; 86 } 87 88 INT의 lowbit ( INT의 N) 89 { 90 반환 N 및 (- N); 91 } 92 93 INT Del_bit_1 ( INT의 N) 94 { 95 반환 N 및 N- ( 1 ); 96 } 97 98 INT의 abss ( INT a) 99 { 100 리턴 A> 0? A : - a 및 101 } 102 103 번 fabss ( 더블 A) (104) { 105 리턴 A> 0 A : - a 및 106 } 107 108 INT의 미네소타 ( int로 하는 INT의 b) (109) { 110 창 은 <B? A : B; 111 }