極大値なしアレイ
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 typedefの長い長いLL。 const int型MAXN = 100001; constのLL MOD = 998244353; N INT、[MAXN]。 LL F [MAXN] [201] [3]、合計、ANS。 INTメイン() { scanf関数( "%のD"、&N); 以下のために(INT i = 1; iが<= N; iが++) { scanf関数( "%dを" &[I])。 } ため(; iは= 200 <; I = 1 int型私は++) { IF([1] = - 1 && [1] = iは!) { fは[1] [i]が[0] = F [1]〜[ I] [1] Fを= [1] [I] [2] = 0; } 他 { [1]〜[I] [0] 1 = F。 F [1]〜[I] [1] = 0; F [1]〜[I] [2] = 0; } } ため(; iがn = <; I = 2 iがint型++) { 和= 0。 用(INTのJ = 1; J <= 200; J ++) { IF([I] = - 1 && [I] = J!) { F [I] [J] [0] = 0; } 他 { [I] [J] [0] =和F。 } 和=(和+ F [I-1] [j] [0] + F [I-1]〜[J] [1] + F [I-1]〜[J] [2])%MOD。 } のための(int型J = 1; J <= 200; J ++) { IF([I] = - 1 && [I] = J!) { F [I] [J] [1] = 0; } 他 { F [I] [j]を[1] =([J] [I-1] F [0] + F [I-1]〜[J] [1] + F [I-1]〜[J] [2] )%モッズ;; } } 和= 0。 用(int型J = 200; J> = 1; j--) { IF([I] = - 1 && [I] = J!) { F [I] [J] [2] = 0; } 他 { [I] [J] [2] =和F。 } 和=(和+ F [I-1]〜[J] [1] + F [I-1]〜[J] [2])%MOD。 } } (; iが= 200 <I ++は、I = 1 INT)用 { ANS =(ANS + F [N] [i]と[2] + F [N] [i]を[1])%MOD。 } のprintf( "%LLDする\ n"、ANS)。 }
シェルのピラミッド
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 typedefの長い長いLL。 LL I、J、K、N。 INTのmain() { int型のT。 scanf関数( "%のD"、&T)。 一方、(T--) { scanf関数( "%のLLD"、&N); I =(LL)(POW(二重(N)* 6.0,1.0 / 3.0)) - 1。 ながら(iは*(I + 1)/ 2 *(I + 2)/ 3 <N) { I ++。 } -N - =(I-1)*(I)/ 2 *(I + 1)/ 3。 J =(LL)(SQRT(N * 2.0))。 一方、(J×(J + 1)/ 2 <N) J ++。 N - = J×(J-1)/ 2。 K = N。 printf( "%LLD%LLD%LLD \ n"は、I、J、K)。 } 0を返します。
ガウスの消去
輸入java.utilの。*; 輸入いるjava.math *。; パブリッククラスメイン { パブリック静的BigIntegerのG [] [] =新しいBigIntegerの[110] [110]。 パブリック静的ブールGauss_Elimination(int型N) { BigIntegerのTMP、B。 int型I、J、K。 用(i = 0; iがn <; iは++) { ため(J = I; J <nであり、j ++) { IF(G [j] [i]を.compareTo(BigInteger.ZERO)!= 0) { 破ります。 } } (j> = N)の場合 { falseを返します。 } (私!= j)の場合 { (; K <= N; K = 0 kは++)用 { TMP = G [i]が[K]。 G [i]が[K] = G [j]と[K]。 G [j] [k]は、TMPを=。 } } 、A = G [i]は[I]。 (; J <N J ++ J = I + 1)のための { IF(!G [j] [i]は.compareTo(BigInteger.ZERO)= 0) { B = G [j]と[I]。 (; K <= N; K = I kは++)のために { G [j]と[K] = G [j]と[K] .multiply(A).subtract(G [i]が[K] .multiply(b)参照) ; } } trueを返します。 } } } パブリック静的無効メイン(文字列[] args) { スキャナCIN =新しいスキャナ(System.in)。 BigIntegerの[]は、X =新しいBigIntegerの[110]。 BigIntegerのY [] =新しいBigIntegerの[110]。 BigIntegerのTMP、アップ、ダウン。 int型nは、I、J。 ブールNEG; 一方、(cin.hasNext()) { N = cin.nextInt()。 用(i = 0; iがn <; iは++) { ため(J = 0であり、j <= nであり、j ++) { G [I] [J] = cin.nextBigInteger()。 } } (Gauss_Elimination(N))であれば { ための式(I = N-1、I> = 0; i--) { アップ= BigInteger.ZERO。 = BigInteger.ONEダウン。 ため(J = I + 1、J <nであり、j ++) { アップ= Y [J] .multiply(アップ)(G [I] [J] .multiply(X [J] .multiply(ダウン))).add ; ダウン= Y [J] .multiply(下)。 } アップ= G [i]が[N] .multiply(ダウン).subtract(アップ) ダウン= G [i]は[I] .multiply(下)。 (up.multiply(ダウン).compareTo(BigInteger.ZERO)<0)であれば { NEG = TRUE。 } 他 { } NEG = FALSE; } アップ= up.abs()。 ダウン= down.abs()。 TMP = up.gcd(下)。 X [I] = up.divide(TMP)。 Y [I] = down.divide(TMP)。 IF(NEG) { X [i]は= Xの[I] .negate()。 } } (i = 0; iがn <; iは++)のために { 場合(X [I]の.mod(Y [i])とのcompareTo(BigInteger.ZERO)== 0) { System.out.printlnは(X [I ] .divide(Y [I]))。 他の { のSystem.out.println(X [I] + "/" + Y [I])。 } } } 他 { するSystem.out.println( "いいえ溶液ん。")。 } のSystem.out.println(); } } }
簡単な加算式
グラフGの数列
海軍演習
海の上のマイニング駅