2019私は、フィールドのトレーニングゲームに最初のチームになることができます

極大値なしアレイ

#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の数列

 

海軍演習

 

海の上のマイニング駅

 

おすすめ

転載: www.cnblogs.com/Accpted/p/11310855.html