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 }