LOJ 3093 "BJOI2019" 光 - 数学+思考

トピック:https://loj.ac/problem/3093

あらゆる種類の反射光の合計、最終ショットダウンを考えてみましょう。この合計は、[i]は*ダウンライトです。

例えば、2つだけの光、第2の層は、次いで、LST、配置されている衝突\(LST「=(LST + LST *のB [2] * [1] + B LST *(B [2] * [1] B )^ 2 + ...)* [2] \)

[i]は「反射層ダウン値のI + 1の場合には、検討中の放出されたユニット出射された光まで下からi番目の層」を表し、fはオーダーを検討

\([I] = bの[I] + [I] * [I-1] F [I] +(B [I] + [I] * [I-1] F [I F ])* B [I + 1] *(B [I] + [I] * F [I-1] * [I])+ ... \) 

前記\(B [I] + [i]は* [I-1] Fは[I] \)の反射光であると行きます。セット\(図示X = bの[I] + [I] * [I-1] F [I] \) 

すなわち、式\(F [I] = X + X * B [I + 1] * X + ... = X \和\ limits_ {K = 0} ^ {\ inftyの}(B [I + 1] * X)^ K \) 

LSTは、次にI-1は、第1の層を透過した光を表し、LSTは、[i]は*)[I-1] F =(LST + LST *のB 'i番目の層を透過した光を表し、(LSTが\' 許さ[I] \)

書式#include <cstdioを> 
する#include <CStringの> 
の#include <アルゴリズム>
 に#define LL長い長い
 使って 名前空間はstdを、
INTのRDN()
{ 
  int型 RET = 0ブール FX = 1チャー CH = GETCHAR()。
  一方、(CH> ' 9 ' || CH < ' 0 '){ 場合(CH == ' - ')FX = 0 ; CH = GETCHAR();}
   一方(CH> = ' 0 ' &&' 9 ')RET = RET * 10 + CH- ' 0 '、CH = GETCHAR()。
  返す FXをRET: - ?RET; 
} 
のconst  int型 N = 5E5 + 5、MOD = 1E9 + 7 INT UPT(INT X){ 一方(X> = MOD)X- = MOD。一方、(x < 0)、X + = MOD。戻りX;}
 int型 PW(int型のx、int型K)
{ int型 RET = 1一方、(K){ 場合(K&1)* X%MOD RET RET =(LL); X =(LL)X * X%MOD; kは>> = 1 ;} 戻り}; RET 

、INT [N F N、[N]、B [N]、 ]、ANS。
INT メイン()
{ 
  N(= RDN)。int型、IV = PW(100、mod- 2 )。
  以下のためにint型 i = 1 ; iが<= N; iは++ 
    { 
      [I] =(LL)RDN()* IV%MOD。
      B [i]は =(LL)RDN()* IV%のMOD。
    } 
  のためのint型 I = 1を iが++; iが<= N 
    { 
      int型、X =(B [I] +(LL)[I] * I- [F 1】%MOD * [I])%のMOD。
      F [I] =(LL)X * PW(UPT(1 - (LL)X *のB [I + 1 ]%のMOD)、mod- 2)%MOD。
    } 
  ANS = [ 1 ]。
  以下のためにint型 iは= 2 ; iがn = <; iは++ 
    ANS =(1 +(LL)B [I] * [I-F 1 ])%のMOD * ANS%MOD * [I]%MOD。
  printf(" %d個の\ n " 、ANS)。
  リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/Narh/p/10941818.html