ユークリッドクラステンプレートp5170

 

1つの // クラステンプレートユークリッドタイトルはp5170
 2  //は、これら三つの式を見つける;
 3  // と会合しなかった最初の二つの
 4  // 後者の二つの残りの二つに関連付けられている; 
5  
6  
図7の#include <cstdioを>
 8の#include <アルゴリズム>
 9の#include <math.h>の
 10の#include < 文字列・H>
 11。 使用した 名前空間STD;
 12であるのtypedef ロング ロングLL;
 13である CONST LL INV2 = 499 122 177 ;    
 14  CONST LL INV6 = 166 374 059 ;
 15  CONST= 11モッズ998244353 16  int型のT;
17  のLL N、A、B、C。
18  構造体クエリー
 19  {
 20      のLL F。
21      LLのG;
22個     のLL H;
23  }。
24  照会解く(-1,11,11-のB、LLのC、LL n)が
 25  {
 26の     クエリANS、PREC。
27      であれば(== 0 ){
 28          ans.f =(B / C)*(N + 1)%MOD。
29          ans.g =(B / C)* N%のMOD×(N + 1)%のMOD * INV2%MOD。
30         ans.h =(B / C)*(B / C)%MOD *(N + 1)%MOD。
31      }
 32      そう であれば(> = C || B> = C){
 33          PREC =解く(%のC、Bの%のC、C、N)。
34          ans.f =(prec.f + N *(N + 1)%MOD * INV2の%MOD *(/ C)%MOD +(N + 1)*(B / C)%のMOD)%MOD。
35          ans.g =((/ C)* N%MOD *(N + 1)%MOD *(2 * N + 1)%MOD * INV6の%+ MOD
 36                 (B / C)* N%MOD *(N + 1) %MOD * INV2%MOD +のprec.g)%MOD。
37          ans.h =(prec.h +(/ C)*(/ C)%MOD * N%MOD *(N + 1)%のV *(2 * N + 1)%のVの* INV6の%+対
 38                 (N + 1)*(B / C)%のV *(B / C)%のV + 2 *(A / C)容量%*のprec.g +対%
 39                 2 *(B / C)容量%*のprec.fの体積%+ 2 *(/ C)%V *(B / C)%MOD * N%V *(N + 1)%のV *のINV2の%のV )%のV。
40      }
 41      {
 42          のLL M =(N * + B)/ C。
43          PREC =解く(C、CB 1、M- 1 )。
44          ans.f =(N *(体積%w)をオンprec.f%)%のV。
45          ans.g =(N *(N + 1)%MOD *(m個%のMOD)%MOD-prec.f-prec.h)%MOD * INV2の%のMOD。
46          ans.h =(N *(Mの%のMOD)%MOD *((M + 1)%MOD)%mod- 2 * prec.g- 2 * prec.f-ans.f)%MOD。
47      }
 48の     リターンANS。
49  }
 50  のint main()の
 51  {
 52      のscanf(" %dの"、&T)。
53      一方(t-- ){
 54          のscanf(" %LLD%LLD%LLD%LLD "、&​​N、&、&B、&C)。
55          クエリANS =(A、B、C、n)を解きます。
56          のprintf(" %LLD%LLD%LLD \ n "、(ans.f + MOD)%のMOD(ans.h + MOD)%のMOD(ans.g + MOD)%のMOD)。
57      }
 58      リターン 0 59 }

最初の式のテンプレートを探しています

1の#include <cstdioを>
 2の#include <アルゴリズム>
 3の#include <math.h>の
 4の#include < 文字列・H>
 5  使って 名前空間STDを、
6のtypedef 長い LL。
7  CONST LL INV2 = 499122177 8  CONST LL INV6 = 166374059 9  CONSTの LLのMOD = 998244353 10  int型のT;
11  のLL N、A、B、C。
12  LL(LLのB、LLのC -1,11,11- n)を解く
 13  {
 14     precは、ANS LL;
15      であれば(== 0)ANS =(B / C)*(N + 1)%MOD。
16      他の 場合(> = C || B> = C){
 17          PREC =解く(%のC、Bの%のC、C、N)。
18          のANS =(PREC + N *(N + 1)%MOD * INV2の%MOD *(/ C)%MOD +(N + 1)*(B / C)%のMOD)%MOD。
19      }
 20      {
 21          のLL M =(N * + B)/ C。
22          =解決PREC(C、CB- 1、M- 1 )。
23          のANS =(N *(M%のMOD)MOD-PREC%)%MOD。
24     }
 25の     リターンANS。
26  }
 27  のint main()の
 28  {
 29      のscanf(" %dの"、&T)。
30      一方(t-- ){
 31          のscanf(" %LLD%LLD%LLD%LLD "、&​​N、&、&B、&C)。
32          LL ANS = (A、B、C、n)を解きます。
33          のprintf(" %のLLD "、(ANS + MOD)%のMOD)。
34      }
 35      リターン 0 36 }

 

おすすめ

転載: www.cnblogs.com/pangbi/p/11627038.html