手順の洛谷CF804B最小数

ああ...

 

トピックリンクします。https://www.luogu.org/problemnew/show/CF804B

 

この質問は何のスキルではありません、ただ法律問題を見つけます。

まず、「AB」は「BBA」に置き換えることができます参照して、私たちが最初に逆列挙(s_0開始から注複数可)を決定する必要があり、あなたが発生した場合、あなたはそれを変更することができますので、回数、ANS + = CNTBを置くことですBバックナンバー、×2 CNTBの数が、ABはまた、2件のトランスデューサのB B BBAとして変更することができます。あなたはB、直接CNTB ++が発生した場合は、別の操作を必要としません。

 

注意:modはいつでも死ぬことができる、それが最終的な結果には影響しません。

 

ACコード:

1の#include <cstdioを>
 2の#include <iostreamの>
 3の#include <CStringの>
 4  
5  使用 名前空間STD。
6  
7  のconst  int型 MOD = 1E9 + 7 8  チャー S [ 1000005 ]。
9  長い 長いANS、CNTB。
10  
11  INT メイン(){
 12      のscanf(" %sの" 、S);
13      INT LEN =のSTRLEN(S)
14      のためにint型 - I = LEN 1; I> = 0 ; i-- ){
 15          であれば(S [I] == ' A ' ){
 16              (ANS + = CNTB)%= MOD。
17              (CNTB * = 2)%= MOD。
18          }
 19           ++ CNTB 20      }
 21      のprintf(" %LLDする\ n "、ANS%のMOD)。
22      リターン 0 ;
23 }
ACコード

 

おすすめ

転載: www.cnblogs.com/New-ljx/p/11234330.html