А. Feibolaqi
Запрос $ F [N-1] * F [N + 1] -f [п] ^ 2 $, $ F [N] $ является номер столбца Feibolaqi $ $ N-пунктов
Подсчитайте первые несколько трудно найти ответы на $ (- 1) ^ N $, доказать это с помощью математической индукции следующее:
$ N = 2 $, гипотеза
Пусть $ N =-гипотезы, когда к $, т.е. $ F [K-1] * F [K + 1] -f [K] ^ 2 = (- 1) ^ K $
При $ N = время $ К, $ F [K] F [К + 2] -f [К + 1.] ^ 2 = Р [К]
доказано
# include <cstdio> #include <алгоритм> #include <вектор> #include <iostream> #include <CString> символ с [1000005]; используя патезрас; INT основных () { зсапЕ ( "% s", s); INT л = StrLen (ы); INT г = ы [л-1] - '0'; если (г% 2 == 0) соиЬ << 1 << епсИ; еще соиЬ << - 1 << епсИ; }
# include <cstdio> #include <алгоритм> #include <вектор> #include <iostream> использованием пространства имен станд; BOOL отношению [10005]; Int А [10005]; вектор <Int> анс; INT основных () { долго долго а, б; CIN >> A >> б; соиЬ << A + B << епсИ; }
C. Последовательность
Насилие, как, сначала найти каждый префиксы в последовательности и, с картой и указывает на то, что префикс существует для каждого запроса сначала необходимо определить , является ли спросил , прежде чем к, спросил, не суд, а затем судить ли последовательность к кратные, в противном случае. 1 за $ (СУММА / Z) ~ к (СУММА / Z) $ и является ли префиксами присутствуют
# include <cstdio> #include <алгоритм> #include <вектор> #include <iostream> #include <CString> #include <карта> с помощью патезрасе; ЬурейеЕ долго долго LL; Const INT maxn = 100005; INT ANS [maxn]; LL а [maxn]; карта <Л.Л., Int> тр; INT основных () { Int N, Q; зсапЕ ( "% d% d", & п, & д); LL сумма = 0; для (INT = 1; г <= п; я ++) { Scanf ( "% LLD", & A [I]); сумма + = а [I]; Т. пл [сумма] = 1; } Для (INT = 1; я <= д; я ++) { INT г; зсапЕ ( "% d", & г); если (г> п ||% Сумма г! } Если (ВНС [г] == 1) { Е ( "Да \ п"); Продолжить; } Для (INT I = 1, я * (сумма / г) <сумма, я ++) { если (тр [я * (сумма / г)] = 1) { Е ( "Нет \ п"); ANS [г] = 2; перерыв; } } Если (ВНС [Z] = 2!) { Е ( "Да \ п"); ANS [г] = 1; } } }
Искомый нижний диаметр как
# include <cstdio> #include <алгоритм> #include <вектор> #include <iostream> #include <CString> с использованием пространства имен станд; Const INT maxn = 100005; вектор <пара <Int, Int>> г [maxn]; INT д [maxn]; BOOL отношению [maxn]; недействительными ДФС (интермедиат и) { отношению [и] = 1; для (INT I = 0; я <г [и] .size (); я ++) { INT V = г [и] [I] .first; если (! Vis [v]) { d [v] = D [и] + д [и] [I] .second; ДФС (v); } } } INT основной () { Int N; зсапЕ ( "% d", & п); для (INT = 1; <п; я ++) { INT х, у, г; зсапЕ (» г [х]. г [у] .push_back (make_pair (х, г)); } // соиЬ << - 1 << епсИ; ДФС (1); INT НКТ; долго долго Dmax = 0; для (INT = 1; г <= п; я ++) { если (д [I]> Dmax) { Dmax = d [I]; CNT = я; } Отношению [I] = 0; д [I] = 0; } Dmax = 0; ДФС (CNT); для (INT = 1; г <= п; я ++) { если (д [I]> Dmax) { Dmax = d [I]; } } СоиЬ << Dmax * 10 + (1 + Dmax) * Dmax / 2 << епсИ; }
E. Путешествия лягушка
Взлет длинной последовательности, но чувствует, что Италия имеет проблему, описать тему не должен подниматься длинной последовательностью 233, п относительно велико, с $ O (N * журнал N) $ формулировки
# include <cstdio> #include <алгоритм> #include <вектор> #include <iostream> #include <CString> с использованием пространства имен станд; Const INT maxn = 100005; INT дп [maxn]; Int А [maxn]; Int N; INT основных () { зсапЕ ( "% d", & п); для (INT = 1; г <= п; я ++) зсапЕ ( "% d", & A [I]); INT CNT = 0; дп [0] = - 1e9; для (INT = 1; г <= п; я ++) { если (а [я]> = дп [CNT]) { дп [++ CNT] = а [I]; } Еще { INT г = upper_bound (дп + 1, дп + 1 + CNT, а [I]) - дп; дп [г] = а [I]; } } }
иерархия ребенка F.
Известный смысл вопросов, ответы последовательности порядка независимы, так что первый ряд порядка последовательности для г-го последовательности, умножается на число требуемых C $ {-n-K 1.} ^ {} 1 -. C {я-1} ^ {к -1} {-C_ п} ^ {к-1} $. И 1e9 + 7 простое число, согласно Эйлера формула $ а ^ {п-1} \ equiv1mod р $
Вы можете получить ответ
# include <cstdio> #include <алгоритм> #include <вектор> #include <iostream> #include <CString> #include <карта> с помощью патезрасе; ЬурейеЕ долго долго LL; Const LL мод = 1e9 + 7; Const INT maxn = 1005; LL PMOD (LL а, б LL) { если (а == 0) возвращает 0; если (б == 0) возвращает 1; если (б == 1) возвращает% моды; LL ANS = PMOD (а, б / 2); ANS = ANS * ANS% по модулю; если (б & 1) вернуть анс * A% мода; вернуться анс; } LL а [maxn]; LL с [maxn] [maxn]; INT основных () { для (INT I = 0; г <= 1000; я ++) с [I] [0] = 1; с [1] [1] = 1; для (INT = 1; г <= 1000; я ++) с [I] [I] = 1; для (INT I = 1; г <= 1000; я ++) , для (Int J = 1, J <я; j ++) с [I] [J] = (с [I-1] [J] + C [i- 1] [J-1])% (мод-1); ИНТ т; зсапЕ ( "% d", & т); в то время как (T -) { Int N, K; зсапЕ ( "% d% d", & п, & к); для (INT = 1; г <= п; я ++) зсапЕ ( "% LLD", & A [I]); сортировки (а + 1, а + 1 + N); LL ANS = 1; для (INT I = 2; <п; я ++) { LL г = С [п-1] [K-1]; если (п> = к-1) Z- = с [п] [K-1]; если (I-1> = к-1) Z- = с [I-1] [K-1]; г = PMOD (а [I], г); ANS = ANS * г% по модулю; } Е ( "% LLD \ п", ANS); } Возвращает 0; }