タイトル
ソース/著者:COCI2008
分析
-
3 ^ kの異なる数字で構成、k個の*番号の後とします。
次は、L:2 *同時に各数値、2の即ち和*
1 + 2 *同時の数の各々 、すなわち、(3 ^ K)*の数の合計2 + 1:次はRである *の数
次*ビットは:数kは、数3 ^ 3 ^(K + 1)となる
数k ^ 3、1 *の和変化しない
数k ^ L、2 *の和に加え、さらに3を
も3プラス数k ^ R、1 + 2 *それぞれの数、*の数の和、すなわち2 + 1 *数(3 ^ k)を
要約すると、和* 5 + 3 ^ K。
プラス電荷ビット精度がなくなって。
コード
1の#include <iostreamの> 2の#include <CStringの> 3の#include <cstdioを> 4 使って 名前空間STDを、 5 のconst int型 N = 1E4 + 10、MO = 1E8。 6 チャーS [N]。 7 INT [N]、P [N] F。 8 長い 長い ANS = 0 。 9 ボイド MUL(INT X) 10 { 11 のための(int型 I = [F 0、I> =] 1 [I] * = xとF、[I + F; i--)1 ] + = F [I] / MO 、F [i]の%=MO; 12 であれば(F [F [ 0 ] + 1 ])F [ 0 ] ++ ; 13 } 14 ボイド()TMP 15 { 16 のためには、(int型私は、pを= [ 0 ]; I> = 1 ; i--)P [I] * = 3、P [I + 1 ] + = P [I] / MO 、P [i]は%= MO。 17 もし(P [P [ 0 ] + 1 ])P [ 0 ] ++ ; 18 } 19 空隙追加() 20 { 21 のために(INTi = 1 ; iは<は= MAX(P [ 0 ]、[F 0 ]); iは++)F [I] + = P [I]、F [iが+ 1 [I F] + = F [i]は/ MO、 】%= MO。 22 であれば(F [F [ 0 ] + 1 ])F [ 0 ] ++ ; 23 } 24 のint main()の 25 { 26 INT LEN。 27の CIN >> S + 1 ; 28 LEN =のSTRLEN(S + 1 )。 29 P [ 0 ] Pは= [ 1 ] = F [ 0 ] = F [ 1 ] = 1 。 30 以下のために(int型 i = 1 ; iは= LEN <; iは++ ) 31 { 32 であれば(S [I] == ' L ')MUL(2 )。 33 他の 場合(S [I] == ' R ')MULは、(2 )、(追加)。 34 他の 場合(S [I] == ' * ')MUL(5 )、(ADD)、TMP()。 35 } 36 COUT << F [F [ 0 ]]。 37 のために(int型 I = F [ 0 - ] 1; I> = 1 ; i--)のprintf(" %の08D " ; F [i])と、 38 }