パッケージ library.core

クラス Utility

java.lang.Object
library.core.Utility
直系の既知のサブクラス:
VvyLw

public class Utility extends Object
便利なメソッド集 Pairクラス以外の外部クラス不使用
  • コンストラクタの概要

    コンストラクタ
    コンストラクタ
    説明
     
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    protected static final double
    ave(double... a)
    与えられたタプルの平均値を求める
    protected static final double
    ave(int... a)
    与えられたタプルの平均値を求める
    protected static final double
    ave(long... a)
    与えられたタプルの平均値を求める
    static final boolean
    binarySearch(int[] a, int x)
    C++のstd::binarySearchに相当するメソッド
    static final boolean
    binarySearch(long[] a, long x)
    C++のstd::binarySearchに相当するメソッド
    static final <T extends Comparable<? super T>>
    boolean
    binarySearch(List<T> a, T x)
    C++のstd::binarySearchに相当するメソッド 遅い
    static final <T extends Comparable<? super T>>
    boolean
    binarySearch(T[] a, T x)
    C++のstd::binarySearchに相当するメソッド
    protected static final long
    binom(int n, int r)
    nCrを求める
    protected static final long
    binom(int n, int r, long mod)
    modを法とするnCrを求める
    protected static final double
    bins(double ok, double ng, DoublePredicate fn)
    めぐる式二分探索
    protected static final int
    bins(int ok, int ng, IntPredicate fn)
    めぐる式二分探索
    protected static final long
    bins(long ok, long ng, LongPredicate fn)
    めぐる式二分探索
    protected static final Double[]
    boxed(double[] a)
    double型配列をボクシングしてDoubleクラスの配列に変換する
    protected static final Integer[]
    boxed(int[] a)
    int型配列をボクシングしてIntegerクラスの配列に変換する
    protected static final Long[]
    boxed(long[] a)
    long型配列をボクシングしてLongクラスの配列に変換する
    protected static final double
    clamp(double l, double x, double r)
    C++のstd::clampのようなメソッド
    protected static final int
    clamp(int l, int x, int r)
    C++のstd::clampのようなメソッド
    protected static final long
    clamp(long l, long x, long r)
    C++のstd::clampのようなメソッド
    protected static final int[]
    corPress(int[] a)
    座標圧縮
    protected static final int[]
    corPress(long[] a)
    座標圧縮
    protected static final Map<Integer,Integer>
    counter(int[] a)
    配列内の数値を個数を数え上げる
    protected static final Map<Long,Integer>
    counter(long[] a)
    配列内の数値を個数を数え上げる
    protected static final long
    cub(long x)
    立方数を求める
    protected static final long[]
    div(long n)
    nの約数を列挙
    protected static final long
    eulerPhi(long n)
    オイラーのΦ関数
    protected static final long
    fact(int n)
    n!
    protected static final long
    fact(int n, long mod)
    modを法としたn!
    protected static final int
    find(char[] s, char c)
    配列sの中にcがあれば何番目にあるか 存在しない場合, -1を返す
    protected static final int
    find(double[] a, double x)
    配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
    protected static final int
    find(int[] a, int x)
    配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
    protected static final int
    find(long[] a, long x)
    配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
    protected static final int
    find(Object[] a, Object x)
    配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
    protected static final int
    findRev(char[] s, char c)
    配列sの中にcがあれば後ろから何番目にあるか 存在しない場合, -1を返す
    protected static final int
    findRev(double[] a, double x)
    配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
    protected static final int
    findRev(int[] a, int x)
    配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
    protected static final int
    findRev(long[] a, long x)
    配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
    protected static final int
    配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
    protected static final double[]
    FloatPairの配列に対して各要素のfirstのみの配列を返す
    protected static final long[]
    IntPairの配列に対して各要素のfirstのみの配列を返す
    protected static final <F extends Comparable<? super F>, S extends Comparable<? super S>>
    F[]
    first(Pair<F,S>[] p)
    Pairの配列に対して各要素のfirstのみの配列を返す
    protected static final long
    floorSum(long n, long m, long a, long b)
    ∑_{i=0}^{n−1} floor((a*i+b)/m)を求める
    static final int
    gcd(int... a)
    与えられたタプルの最大公約数を求める e.g.) gcd(12, 15, 24) = 3
    static final long
    gcd(long... a)
    与えられたタプルの最大公約数を求める
    static final long
    gcd(long a, long b)
    aとbの最大公約数を求める
    protected static final double
    C++のstd::inner_productに相当するメソッド
    protected static final long
    C++のstd::inner_productに相当するメソッド
    protected static final FloatPair
    intersection(FloatPair a, double sec1, FloatPair b, double sec2)
    直線a.first * x + a.second * y + sec1 = 0と直線b.first * x + b.second * y + sec2 = 0の交点を求める 連立一次方程式を解くのにも使える
    protected static final FloatPair
    intersection(IntPair a, long sec1, IntPair b, long sec2)
    直線a.first * x + a.second * y + sec1 = 0と直線b.first * x + b.second * y + sec2 = 0の交点を求める 連立一次方程式を解くのにも使える
    protected static final double
    intRound(double a, long b, int c)
    a / bを小数点c桁で四捨五入して求める
    protected static final long
    inv(long a, long m)
    inv a(mod m)を求める
    static final IntStream
    iota(int n)
    C++のstd::iotaに相当するメソッド IntStreamを返すため、配列化するにはtoArray()する必要がある
    static final IntStream
    iota(int n, int init)
    C++のstd::iotaに相当するメソッド IntStreamを返すため、配列化するにはtoArray()する必要がある
    protected static final boolean
    isBit(long i, long j)
    bit全探索などで使う(i >> jが奇数かどうか)
    protected static final boolean
    isInt(double n)
    nが整数かどうか判定
    protected static final boolean
    isPrime(long n)
    nが素数かどうか判定
    protected static final boolean
    isSorted(char[] a)
    C++のstd::is_sortedに相当するメソッド
    protected static final boolean
    isSorted(double[] a)
    C++のstd::is_sortedに相当するメソッド
    protected static final boolean
    isSorted(int[] a)
    C++のstd::is_sortedに相当するメソッド
    protected static final boolean
    isSorted(long[] a)
    C++のstd::is_sortedに相当するメソッド
    protected static final boolean
    C++のstd::is_sortedに相当するメソッド
    protected static final <T extends Comparable<? super T>>
    boolean
    isSorted(T[] a)
    C++のstd::is_sortedに相当するメソッド
    protected static final boolean
    isSqr(long n)
    nが平方数かどうか判定
    static final long
    kthRoot(long n, int k)
    nのk乗根を求める
    static final long
    lcm(int... a)
    与えられたタプルの最小公倍数を求める e.g.) lcm(2, 3, 5) = 30
    static final long
    lcm(long... a)
    与えられたタプルの最小公倍数を求める
    static final long
    lcm(long a, long b)
    aとbの最小公倍数を求める
    static final double
    log(double x, long base)
    baseを底とするxの定数を求める
    static final int
    lowerBound(int[] a, int x)
    C++のstd::lower_boundに相当するメソッド
    static final int
    lowerBound(long[] a, long x)
    C++のstd::lower_boundに相当するメソッド
    static final <T extends Comparable<? super T>>
    int
    lowerBound(List<T> a, T x)
    C++のstd::lower_boundに相当するメソッド 遅い
    static final <T extends Comparable<? super T>>
    int
    lowerBound(T[] a, T x)
    C++のstd::lower_boundに相当するメソッド
    protected static final int[]
    manacher(String s_, boolean calcEven)
    Manacher Algorithm
    static final double
    max(double... a)
    与えられたタプルの最大値を求める
    static final int
    max(int... a)
    与えられたタプルの最大値を求める
    static final long
    max(long... a)
    与えられたタプルの最大値を求める
    protected static final double
    median(double[] a)
    ソート済配列の中央値を求める
    protected static final double
    median(int[] a)
    ソート済配列の中央値を求める
    protected static final double
    median(long[] a)
    ソート済配列の中央値を求める
    static final double
    min(double... a)
    与えられたタプルの最小値を求める
    static final int
    min(int... a)
    与えられたタプルの最小値を求める
    static final long
    min(long... a)
    与えられたタプルの最小値を求める
    protected static final int
    mod(long n, int m)
    nが負の時でも正の剰余を求める 法がintの時, intで返す
    static final long
    mod(long n, long m)
    nが負の時でも正の剰余を求める
    protected static final long
    modPow(long a, long b, long m)
    aのb乗(mod m)を求める
    protected static final boolean
    nextPerm(char[] a)
    C++のstd::next_permutationに相当するメソッド
    protected static final boolean
    nextPerm(double[] a)
    C++のstd::next_permutationに相当するメソッド
    protected static final boolean
    nextPerm(int[] a)
    C++のstd::next_permutationに相当するメソッド
    protected static final boolean
    nextPerm(long[] a)
    C++のstd::next_permutationに相当するメソッド
    protected static final String
    no(boolean ok)
    protected static final long
    perm(int n, int r)
    nPrを求める
    protected static final long
    perm(int n, int r, long mod)
    modを法としたnPrを求める
    protected static final long
    powi(long a, int b)
    aのb乗を求める
    protected static final boolean
    prevPerm(char[] a)
    C++のstd::prev_permutationに相当するメソッド
    protected static final boolean
    prevPerm(double[] a)
    C++のstd::prev_permutationに相当するメソッド
    protected static final boolean
    prevPerm(int[] a)
    C++のstd::prev_permutationに相当するメソッド
    protected static final boolean
    prevPerm(long[] a)
    C++のstd::prev_permutationに相当するメソッド
    protected static final IntPair[]
    primeFactor(long n)
    nを素因数分解 e.g.) primeFactor(24) = [(2, 3), (3, 1)]
    protected static final double
    prod(double... a)
    与えられたタプルの総積を求める
    protected static final long
    prod(int... a)
    与えられたタプルの総積を求める
    protected static final long
    prod(long... a)
    与えられたタプルの総積を求める
    protected static final char[]
    reverse(char[] a)
    配列を逆順に並び替える
    protected static final double[]
    reverse(double[] a)
    配列を逆順に並び替える
    protected static final int[]
    reverse(int[] a)
    配列を逆順に並び替える
    protected static final long[]
    reverse(long[] a)
    配列を逆順に並び替える
    protected static final Object[]
    配列を逆順に並び替える
    protected static final String
    文字列を逆順に並び替える
    static final boolean[]
    rotate(boolean[] a, int id)
    C++のstd::rotateに相当するメソッド
    static final char[]
    rotate(char[] a, int id)
    C++のstd::rotateに相当するメソッド
    static final double[]
    rotate(double[] a, int id)
    C++のstd::rotateに相当するメソッド
    static final int[]
    rotate(int[] a, int id)
    C++のstd::rotateに相当するメソッド
    static final long[]
    rotate(long[] a, int id)
    C++のstd::rotateに相当するメソッド
    static final Object[]
    rotate(Object[] a, int id)
    C++のstd::rotateに相当するメソッド
    static final String
    rotate(String s, int id)
    C++のstd::rotateに相当するメソッド
    protected static final char[][]
    rotateL(char[][] a)
    二次元配列を左回転させる
    protected static final double[][]
    rotateL(double[][] a)
    二次元配列を左回転させる
    protected static final int[][]
    rotateL(int[][] a)
    二次元配列を左回転させる
    protected static final long[][]
    rotateL(long[][] a)
    二次元配列を左回転させる
    protected static final char[][]
    rotateR(char[][] a)
    二次元配列を右回転させる
    protected static final double[][]
    rotateR(double[][] a)
    二次元配列を右回転させる
    protected static final int[][]
    rotateR(int[][] a)
    二次元配列を右回転させる
    protected static final long[][]
    rotateR(long[][] a)
    二次元配列を右回転させる
    protected static final IntPair[]
    runLenPress(int[] a)
    ランレングス圧縮
    protected static final IntPair[]
    runLenPress(long[] a)
    ランレングス圧縮
    protected static final Pair<Character,Integer>[]
    ランレングス圧縮
    protected static final long[]
    ランレングス圧縮したint型配列の復元
    protected static final String
    ランレングス圧縮した文字列の復元
    static final boolean
    scope(double l, double x, double r)
    xが閉区間[l, r]の中に収まるか判定する
    static final boolean
    scope(int l, int x, int r)
    xが閉区間[l, r]の中に収まるか判定する
    static final boolean
    scope(long l, long x, long r)
    xが閉区間[l, r]の中に収まるか判定する
    protected static final double[]
    FloatPairの配列に対して各要素のsecondのみの配列を返す
    protected static final long[]
    IntPairの配列に対して各要素のsecondのみの配列を返す
    protected static final <F extends Comparable<? super F>, S extends Comparable<? super S>>
    S[]
    second(Pair<F,S>[] p)
    Pairの配列に対して各要素のsecondのみの配列を返す
    protected static final long
    sigma(long n)
    1からnまでの総和を求める
    protected static final long
    sigma(long a, long b)
    aからbまでの総和を求める
    static final char[]
    sorted(char[] a)
    Pythonのsortedに相当するメソッド
    static final double[]
    sorted(double[] a)
    Pythonのsortedに相当するメソッド
    static final int[]
    sorted(int[] a)
    Pythonのsortedに相当するメソッド
    static final long[]
    sorted(long[] a)
    Pythonのsortedに相当するメソッド
    static final String
    Pythonのsortedに相当するメソッド
    static final <T extends Comparable<? super T>>
    T[]
    sorted(T[] a)
    Pythonのsortedに相当するメソッド
    protected static final long
    sqr(long x)
    平方数を求める
    static final double
    sum(double... a)
    与えられたタプルの総和を求める
    static final long
    sum(int... a)
    与えられたタプルの総和を求める
    static final long
    sum(long... a)
    与えられたタプルの総和を求める
    static final void
    swap(boolean[] a, boolean[] b)
    二つの配列を入れ替える
    static final void
    swap(boolean[] a, int i, int j)
    配列のi番目とj番目を入れ替える
    static final void
    swap(char[] a, char[] b)
    二つの配列を入れ替える
    static final void
    swap(char[] a, int i, int j)
    配列のi番目とj番目を入れ替える
    static final void
    swap(double[] a, double[] b)
    二つの配列を入れ替える
    static final void
    swap(double[] a, int i, int j)
    配列のi番目とj番目を入れ替える
    static final void
    swap(int[] a, int[] b)
    二つの配列を入れ替える
    static final void
    swap(int[] a, int i, int j)
    配列のi番目とj番目を入れ替える
    static final void
    swap(long[] a, int i, int j)
    配列のi番目とj番目を入れ替える
    static final void
    swap(long[] a, long[] b)
    二つの配列を入れ替える
    static final void
    swap(Object[] a, int i, int j)
    配列のi番目とj番目を入れ替える
    static final void
    swap(Object[] a, Object[] b)
    二つの配列を入れ替える
    static final FloatPair[]
    FloatPairの配列に対して各要素をswapさせる
    static final IntPair[]
    IntPairの配列に対して各要素をswapさせる
    static final <F extends Comparable<? super F>, S extends Comparable<? super S>>
    Pair<S,F>[]
    swap(Pair<F,S>[] p)
    Pairの配列に対して各要素をswapさせる
    protected static final long
    tetration(long a, long b, long m)
    a↑↑bはa^a^a^...
    static final int
    upperBound(int[] a, int x)
    C++のstd::upper_boundに相当するメソッド
    static final int
    upperBound(long[] a, long x)
    C++のstd::upper_boundに相当するメソッド
    static final <T extends Comparable<? super T>>
    int
    upperBound(List<T> a, T x)
    C++のstd::upper_boundに相当するメソッド 遅い
    static final <T extends Comparable<? super T>>
    int
    upperBound(T[] a, T x)
    C++のstd::upper_boundに相当するメソッド
    protected static final String
    yes(boolean ok)
    古のYESNOパターンやyesnoパターンの時はString.toUpperCase(java.util.Locale)String.toLowerCase(java.util.Locale)を使うと良い
    protected static final int[]
    Z-Algorithm

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • Utility

      public Utility()
  • メソッドの詳細

    • yes

      protected static final String yes(boolean ok)
      古のYESNOパターンやyesnoパターンの時はString.toUpperCase(java.util.Locale)String.toLowerCase(java.util.Locale)を使うと良い
      パラメータ:
      ok - boolean
      戻り値:
      okがtrueなら"Yes" falseなら"No"
    • no

      protected static final String no(boolean ok)
      パラメータ:
      ok - boolean
      戻り値:
      okがtrueなら"No" falseなら"Yes"
    • sqr

      protected static final long sqr(long x)
      平方数を求める
      パラメータ:
      x -
      戻り値:
      xの平方数
    • cub

      protected static final long cub(long x)
      立方数を求める
      パラメータ:
      x -
      戻り値:
      xの立方数
    • mod

      protected static final int mod(long n, int m)
      nが負の時でも正の剰余を求める 法がintの時, intで返す
      パラメータ:
      n -
      m -
    • mod

      public static final long mod(long n, long m)
      nが負の時でも正の剰余を求める
      パラメータ:
      n -
      m -
    • log

      public static final double log(double x, long base)
      baseを底とするxの定数を求める
      パラメータ:
      x -
      base -
      戻り値:
      baseを底とするxの対数
    • intRound

      protected static final double intRound(double a, long b, int c)
      a / bを小数点c桁で四捨五入して求める
      パラメータ:
      a -
      b -
      c -
    • powi

      protected static final long powi(long a, int b)
      aのb乗を求める
      パラメータ:
      a -
      b -
      戻り値:
      aのb乗
    • modPow

      protected static final long modPow(long a, long b, long m)
      aのb乗(mod m)を求める
      パラメータ:
      a -
      b -
      m -
      戻り値:
      aのb乗のmを法とした剰余
    • inv

      protected static final long inv(long a, long m)
      inv a(mod m)を求める
      パラメータ:
      a -
      m -
      戻り値:
      aの逆元のmを法とした剰余
    • lcm

      public static final long lcm(long a, long b)
      aとbの最小公倍数を求める
      パラメータ:
      a -
      b -
      戻り値:
      aとbの最小公倍数
    • lcm

      public static final long lcm(int... a)
      与えられたタプルの最小公倍数を求める e.g.) lcm(2, 3, 5) = 30
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの最小公倍数
    • lcm

      public static final long lcm(long... a)
      与えられたタプルの最小公倍数を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの最小公倍数
    • gcd

      public static final long gcd(long a, long b)
      aとbの最大公約数を求める
      パラメータ:
      a -
      b -
      戻り値:
      aとbの最大公約数
    • gcd

      public static final int gcd(int... a)
      与えられたタプルの最大公約数を求める e.g.) gcd(12, 15, 24) = 3
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの最大公約数
    • gcd

      public static final long gcd(long... a)
      与えられたタプルの最大公約数を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの最大公約数
    • min

      public static final int min(int... a)
      与えられたタプルの最小値を求める
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの最小値
    • min

      public static final long min(long... a)
      与えられたタプルの最小値を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの最小値
    • min

      public static final double min(double... a)
      与えられたタプルの最小値を求める
      パラメータ:
      a - double型タプル あるいはdouble型配列
      戻り値:
      aの最小値
    • max

      public static final int max(int... a)
      与えられたタプルの最大値を求める
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの最大値
    • max

      public static final long max(long... a)
      与えられたタプルの最大値を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの最大値
    • max

      public static final double max(double... a)
      与えられたタプルの最大値を求める
      パラメータ:
      a - double型タプル あるいはdouble型配列
      戻り値:
      aの最大値
    • sum

      public static final long sum(int... a)
      与えられたタプルの総和を求める
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの総和
    • sum

      public static final long sum(long... a)
      与えられたタプルの総和を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの総和
    • sum

      public static final double sum(double... a)
      与えられたタプルの総和を求める
      パラメータ:
      a - double型タプル あるいはdouble型配列
      戻り値:
      aの総和
    • prod

      protected static final long prod(int... a)
      与えられたタプルの総積を求める
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの総積
    • prod

      protected static final long prod(long... a)
      与えられたタプルの総積を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの総積
    • prod

      protected static final double prod(double... a)
      与えられたタプルの総積を求める
      パラメータ:
      a - double型タプル あるいはdouble型配列
      戻り値:
      aの総積
    • ave

      protected static final double ave(int... a)
      与えられたタプルの平均値を求める
      パラメータ:
      a - int型タプル あるいはint型配列
      戻り値:
      aの平均値
    • ave

      protected static final double ave(long... a)
      与えられたタプルの平均値を求める
      パラメータ:
      a - long型タプル あるいはlong型配列
      戻り値:
      aの平均値
    • ave

      protected static final double ave(double... a)
      与えられたタプルの平均値を求める
      パラメータ:
      a - double型タプル あるいはdouble型配列
      戻り値:
      aの平均値
    • median

      protected static final double median(int[] a)
      ソート済配列の中央値を求める
      パラメータ:
      a - ソート済のint型配列
      戻り値:
      中央値
    • median

      protected static final double median(long[] a)
      ソート済配列の中央値を求める
      パラメータ:
      a - ソート済のlong型配列
      戻り値:
      中央値
    • median

      protected static final double median(double[] a)
      ソート済配列の中央値を求める
      パラメータ:
      a - ソート済のdouble型配列
      戻り値:
      中央値
    • div

      protected static final long[] div(long n)
      nの約数を列挙
      パラメータ:
      n - 整数
      戻り値:
      nの約数の配列
    • primeFactor

      protected static final IntPair[] primeFactor(long n)
      nを素因数分解 e.g.) primeFactor(24) = [(2, 3), (3, 1)]
      パラメータ:
      n - 整数
      戻り値:
      nの素因数分解結果
    • eulerPhi

      protected static final long eulerPhi(long n)
      オイラーのΦ関数
      パラメータ:
      n - 整数
      戻り値:
      1からnまでの整数のうちnと互いに素なものの個数
    • sigma

      protected static final long sigma(long n)
      1からnまでの総和を求める
      パラメータ:
      n -
      戻り値:
      1からnまでの総和
    • sigma

      protected static final long sigma(long a, long b)
      aからbまでの総和を求める
      パラメータ:
      a -
      b -
      戻り値:
      aからbまでの総和
    • fact

      protected static final long fact(int n)
      n!を求める
      パラメータ:
      n - 整数
      戻り値:
      nの階乗
    • fact

      protected static final long fact(int n, long mod)
      modを法としたn!を求める
      パラメータ:
      n -
      mod -
      戻り値:
      nの階乗のmodを法とする剰余
    • perm

      protected static final long perm(int n, int r)
      nPrを求める
      パラメータ:
      n -
      r -
      戻り値:
      順列(nPr)
    • perm

      protected static final long perm(int n, int r, long mod)
      modを法としたnPrを求める
      パラメータ:
      n -
      r -
      mod -
      戻り値:
      順列のmodを法とする剰余
    • binom

      protected static final long binom(int n, int r)
      nCrを求める
      パラメータ:
      n -
      r -
      戻り値:
      二項係数(nCr)
    • binom

      protected static final long binom(int n, int r, long mod)
      modを法とするnCrを求める
      パラメータ:
      n -
      r -
      mod -
      戻り値:
      二項係数のmodを法とする剰余
    • isInt

      protected static final boolean isInt(double n)
      nが整数かどうか判定
      パラメータ:
      n -
      戻り値:
      nが整数ならtrue, 整数でないならfalse
    • isSqr

      protected static final boolean isSqr(long n)
      nが平方数かどうか判定
      パラメータ:
      n -
      戻り値:
      nが平方数ならtrue, 平方数でないならfalse
    • isPrime

      protected static final boolean isPrime(long n)
      nが素数かどうか判定
      パラメータ:
      n -
      戻り値:
      nが素数ならtrue, 1か合成数ならfalse
    • scope

      public static final boolean scope(int l, int x, int r)
      xが閉区間[l, r]の中に収まるか判定する
      パラメータ:
      l -
      x -
      r -
      戻り値:
      l 入力が無効です: '<'= x 入力が無効です: '<'= r
    • scope

      public static final boolean scope(long l, long x, long r)
      xが閉区間[l, r]の中に収まるか判定する
      パラメータ:
      l -
      x -
      r -
      戻り値:
      l 入力が無効です: '<'= x 入力が無効です: '<'= r
    • scope

      public static final boolean scope(double l, double x, double r)
      xが閉区間[l, r]の中に収まるか判定する
      パラメータ:
      l -
      x -
      r -
      戻り値:
      l 入力が無効です: '<'= x 入力が無効です: '<'= r
    • clamp

      protected static final int clamp(int l, int x, int r)
      C++のstd::clampのようなメソッド
      パラメータ:
      l -
      x -
      r -
      関連項目:
    • clamp

      protected static final long clamp(long l, long x, long r)
      C++のstd::clampのようなメソッド
      パラメータ:
      l -
      x -
      r -
      関連項目:
    • clamp

      protected static final double clamp(double l, double x, double r)
      C++のstd::clampのようなメソッド
      パラメータ:
      l -
      x -
      r -
      関連項目:
    • isBit

      protected static final boolean isBit(long i, long j)
      bit全探索などで使う(i >> jが奇数かどうか)
      パラメータ:
      i - bit
      j - target
    • nextPerm

      protected static final boolean nextPerm(int[] a)
      C++のstd::next_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • nextPerm

      protected static final boolean nextPerm(long[] a)
      C++のstd::next_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • nextPerm

      protected static final boolean nextPerm(double[] a)
      C++のstd::next_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • nextPerm

      protected static final boolean nextPerm(char[] a)
      C++のstd::next_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • prevPerm

      protected static final boolean prevPerm(int[] a)
      C++のstd::prev_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • prevPerm

      protected static final boolean prevPerm(long[] a)
      C++のstd::prev_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • prevPerm

      protected static final boolean prevPerm(double[] a)
      C++のstd::prev_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • prevPerm

      protected static final boolean prevPerm(char[] a)
      C++のstd::prev_permutationに相当するメソッド
      パラメータ:
      a -
      関連項目:
    • find

      protected static final int find(int[] a, int x)
      配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
      関連項目:
    • find

      protected static final int find(long[] a, long x)
      配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
      関連項目:
    • find

      protected static final int find(double[] a, double x)
      配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
      関連項目:
    • find

      protected static final int find(char[] s, char c)
      配列sの中にcがあれば何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      s -
      c -
      関連項目:
    • find

      protected static final int find(Object[] a, Object x)
      配列aの中にxがあれば何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
      関連項目:
    • findRev

      protected static final int findRev(int[] a, int x)
      配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
    • findRev

      protected static final int findRev(long[] a, long x)
      配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
    • findRev

      protected static final int findRev(double[] a, double x)
      配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
    • findRev

      protected static final int findRev(char[] s, char c)
      配列sの中にcがあれば後ろから何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      s -
      c -
    • findRev

      protected static final int findRev(Object[] a, Object x)
      配列aの中にxがあれば後ろから何番目にあるか 存在しない場合, -1を返す
      パラメータ:
      a -
      x -
    • binarySearch

      public static final boolean binarySearch(int[] a, int x)
      C++のstd::binarySearchに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      ソート済配列の中に要素が含まれていればtrue
      関連項目:
    • binarySearch

      public static final boolean binarySearch(long[] a, long x)
      C++のstd::binarySearchに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      ソート済配列の中に要素が含まれていればtrue
      関連項目:
    • binarySearch

      public static final <T extends Comparable<? super T>> boolean binarySearch(T[] a, T x)
      C++のstd::binarySearchに相当するメソッド
      型パラメータ:
      T -
      パラメータ:
      a -
      x -
      戻り値:
      ソート済配列の中に要素が含まれていればtrue
      関連項目:
    • binarySearch

      public static final <T extends Comparable<? super T>> boolean binarySearch(List<T> a, T x)
      C++のstd::binarySearchに相当するメソッド 遅い
      型パラメータ:
      T -
      パラメータ:
      a -
      x -
      戻り値:
      ソート済リストの中に要素が含まれていればtrue
      関連項目:
    • lowerBound

      public static final int lowerBound(int[] a, int x)
      C++のstd::lower_boundに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      その値以上の要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • lowerBound

      public static final int lowerBound(long[] a, long x)
      C++のstd::lower_boundに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      その値以上の要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • lowerBound

      public static final <T extends Comparable<? super T>> int lowerBound(T[] a, T x)
      C++のstd::lower_boundに相当するメソッド
      型パラメータ:
      T -
      パラメータ:
      a -
      x -
      戻り値:
      その値以上の要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • lowerBound

      public static final <T extends Comparable<? super T>> int lowerBound(List<T> a, T x)
      C++のstd::lower_boundに相当するメソッド 遅い
      型パラメータ:
      T -
      パラメータ:
      a -
      x -
      戻り値:
      その値以上の要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • upperBound

      public static final int upperBound(int[] a, int x)
      C++のstd::upper_boundに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      その値より大きい要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • upperBound

      public static final int upperBound(long[] a, long x)
      C++のstd::upper_boundに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      その値より大きい要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • upperBound

      public static final <T extends Comparable<? super T>> int upperBound(T[] a, T x)
      C++のstd::upper_boundに相当するメソッド
      パラメータ:
      a -
      x -
      戻り値:
      その値より大きい要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • upperBound

      public static final <T extends Comparable<? super T>> int upperBound(List<T> a, T x)
      C++のstd::upper_boundに相当するメソッド 遅い
      パラメータ:
      a -
      x -
      戻り値:
      その値より大きい要素が初めて現れるインデックス(イテレータではない)
      関連項目:
    • sorted

      public static final String sorted(String s)
      Pythonのsortedに相当するメソッド
      パラメータ:
      s -
      戻り値:
      昇順にソートした文字列
    • sorted

      public static final int[] sorted(int[] a)
      Pythonのsortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      昇順にソートしたint型配列
    • sorted

      public static final long[] sorted(long[] a)
      Pythonのsortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      昇順にソートしたlong型配列
    • sorted

      public static final double[] sorted(double[] a)
      Pythonのsortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      昇順にソートしたdouble型配列
    • sorted

      public static final char[] sorted(char[] a)
      Pythonのsortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      昇順にソートしたchar型配列
    • sorted

      public static final <T extends Comparable<? super T>> T[] sorted(T[] a)
      Pythonのsortedに相当するメソッド
      型パラメータ:
      T - Comparableなクラス
      パラメータ:
      a -
      戻り値:
      昇順にソートした総称型配列
    • isSorted

      protected static final boolean isSorted(String s)
      C++のstd::is_sortedに相当するメソッド
      パラメータ:
      s -
      戻り値:
      文字列がソートされているかどうか
      関連項目:
    • isSorted

      protected static final boolean isSorted(int[] a)
      C++のstd::is_sortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      配列がソートされているかどうか
      関連項目:
    • isSorted

      protected static final boolean isSorted(long[] a)
      C++のstd::is_sortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      配列がソートされているかどうか
      関連項目:
    • isSorted

      protected static final boolean isSorted(double[] a)
      C++のstd::is_sortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      配列がソートされているかどうか
      関連項目:
    • isSorted

      protected static final boolean isSorted(char[] a)
      C++のstd::is_sortedに相当するメソッド
      パラメータ:
      a -
      戻り値:
      配列がソートされているかどうか
      関連項目:
    • isSorted

      protected static final <T extends Comparable<? super T>> boolean isSorted(T[] a)
      C++のstd::is_sortedに相当するメソッド
      型パラメータ:
      T - Comparableなクラス
      パラメータ:
      a -
      戻り値:
      配列がソートされているかどうか
      関連項目:
    • reverse

      protected static final String reverse(String s)
      文字列を逆順に並び替える
      パラメータ:
      s -
      戻り値:
      逆順に並び替えた文字列
    • reverse

      protected static final int[] reverse(int[] a)
      配列を逆順に並び替える
      パラメータ:
      a -
      戻り値:
      逆順に並び替えたint型配列
    • reverse

      protected static final long[] reverse(long[] a)
      配列を逆順に並び替える
      パラメータ:
      a -
      戻り値:
      逆順に並び替えたlong型配列
    • reverse

      protected static final double[] reverse(double[] a)
      配列を逆順に並び替える
      パラメータ:
      a -
      戻り値:
      逆順に並び替えたdouble型配列
    • reverse

      protected static final char[] reverse(char[] a)
      配列を逆順に並び替える
      パラメータ:
      a -
      戻り値:
      逆順に並び替えたchar型配列
    • reverse

      protected static final Object[] reverse(Object[] a)
      配列を逆順に並び替える
      パラメータ:
      a -
      戻り値:
      逆順に並び替えたObjectクラスの配列
    • rotate

      public static final int[] rotate(int[] a, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      a -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotate

      public static final long[] rotate(long[] a, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      a -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotate

      public static final double[] rotate(double[] a, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      a -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotate

      public static final char[] rotate(char[] a, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      a -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotate

      public static final boolean[] rotate(boolean[] a, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      a -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotate

      public static final Object[] rotate(Object[] a, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      a -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotate

      public static final String rotate(String s, int id)
      C++のstd::rotateに相当するメソッド
      パラメータ:
      s -
      id - 正の数の時、前にある値は後ろに移動し、負の数の時、後ろにある値は前に移動する
      関連項目:
    • rotateR

      protected static final int[][] rotateR(int[][] a)
      二次元配列を右回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を右回転させたもの
    • rotateR

      protected static final long[][] rotateR(long[][] a)
      二次元配列を右回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を右回転させたもの
    • rotateR

      protected static final double[][] rotateR(double[][] a)
      二次元配列を右回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を右回転させたもの
    • rotateR

      protected static final char[][] rotateR(char[][] a)
      二次元配列を右回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を右回転させたもの
    • rotateL

      protected static final int[][] rotateL(int[][] a)
      二次元配列を左回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を左回転させたもの
    • rotateL

      protected static final long[][] rotateL(long[][] a)
      二次元配列を左回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を左回転させたもの
    • rotateL

      protected static final double[][] rotateL(double[][] a)
      二次元配列を左回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を左回転させたもの
    • rotateL

      protected static final char[][] rotateL(char[][] a)
      二次元配列を左回転させる
      パラメータ:
      a -
      戻り値:
      二次元配列を左回転させたもの
    • swap

      public static final void swap(int[] a, int i, int j)
      配列のi番目とj番目を入れ替える
      パラメータ:
      a -
      i -
      j -
      関連項目:
    • swap

      public static final void swap(long[] a, int i, int j)
      配列のi番目とj番目を入れ替える
      パラメータ:
      a -
      i -
      j -
      関連項目:
    • swap

      public static final void swap(double[] a, int i, int j)
      配列のi番目とj番目を入れ替える
      パラメータ:
      a -
      i -
      j -
      関連項目:
    • swap

      public static final void swap(char[] a, int i, int j)
      配列のi番目とj番目を入れ替える
      パラメータ:
      a -
      i -
      j -
      関連項目:
    • swap

      public static final void swap(boolean[] a, int i, int j)
      配列のi番目とj番目を入れ替える
      パラメータ:
      a -
      i -
      j -
      関連項目:
    • swap

      public static final void swap(Object[] a, int i, int j)
      配列のi番目とj番目を入れ替える
      パラメータ:
      a -
      i -
      j -
      関連項目:
    • swap

      public static final void swap(int[] a, int[] b)
      二つの配列を入れ替える
      パラメータ:
      a -
      b -
      関連項目:
    • swap

      public static final void swap(long[] a, long[] b)
      二つの配列を入れ替える
      パラメータ:
      a -
      b -
      関連項目:
    • swap

      public static final void swap(double[] a, double[] b)
      二つの配列を入れ替える
      パラメータ:
      a -
      b -
      関連項目:
    • swap

      public static final void swap(char[] a, char[] b)
      二つの配列を入れ替える
      パラメータ:
      a -
      b -
      関連項目:
    • swap

      public static final void swap(boolean[] a, boolean[] b)
      二つの配列を入れ替える
      パラメータ:
      a -
      b -
      関連項目:
    • swap

      public static final void swap(Object[] a, Object[] b)
      二つの配列を入れ替える
      パラメータ:
      a -
      b -
      関連項目:
    • swap

      public static final <F extends Comparable<? super F>, S extends Comparable<? super S>> Pair<S,F>[] swap(Pair<F,S>[] p)
      Pairの配列に対して各要素をswapさせる
      型パラメータ:
      F -
      S -
      パラメータ:
      p -
      戻り値:
      Pair配列の各Pairに対してPair.swap()をした配列
    • swap

      public static final IntPair[] swap(IntPair[] p)
      IntPairの配列に対して各要素をswapさせる
      パラメータ:
      p -
      戻り値:
      IntPair配列の各IntPairに対してIntPair.swap()をした配列
    • swap

      public static final FloatPair[] swap(FloatPair[] p)
      FloatPairの配列に対して各要素をswapさせる
      パラメータ:
      p -
      戻り値:
      FloatPair配列の各FloatPairに対してFloatPair.swap()をした配列
    • first

      protected static final <F extends Comparable<? super F>, S extends Comparable<? super S>> F[] first(Pair<F,S>[] p)
      Pairの配列に対して各要素のfirstのみの配列を返す
      型パラメータ:
      F -
      S -
      パラメータ:
      p -
      戻り値:
      Pairクラスの配列に対してfirstのみの要素を取り出した配列
    • first

      protected static final long[] first(IntPair[] p)
      IntPairの配列に対して各要素のfirstのみの配列を返す
      パラメータ:
      p -
      戻り値:
      IntPairクラスの配列に対してfirstのみの要素を取り出した配列
    • first

      protected static final double[] first(FloatPair[] p)
      FloatPairの配列に対して各要素のfirstのみの配列を返す
      パラメータ:
      p -
      戻り値:
      FloatPairクラスの配列に対してfirstのみの要素を取り出した配列
    • second

      protected static final <F extends Comparable<? super F>, S extends Comparable<? super S>> S[] second(Pair<F,S>[] p)
      Pairの配列に対して各要素のsecondのみの配列を返す
      型パラメータ:
      F -
      S -
      パラメータ:
      p -
      戻り値:
      Pairクラスの配列に対してsecondのみの要素を取り出した配列
    • second

      protected static final long[] second(IntPair[] p)
      IntPairの配列に対して各要素のsecondのみの配列を返す
      パラメータ:
      p -
      戻り値:
      IntPairクラスの配列に対してsecondのみの要素を取り出した配列
    • second

      protected static final double[] second(FloatPair[] p)
      FloatPairの配列に対して各要素のsecondのみの配列を返す
      パラメータ:
      p -
      戻り値:
      FloatPairクラスの配列に対してsecondのみの要素を取り出した配列
    • iota

      public static final IntStream iota(int n)
      C++のstd::iotaに相当するメソッド IntStreamを返すため、配列化するにはtoArray()する必要がある
      パラメータ:
      n -
      戻り値:
      [0, 1, 2, ..., n - 1]のIntStream
      関連項目:
    • iota

      public static final IntStream iota(int n, int init)
      C++のstd::iotaに相当するメソッド IntStreamを返すため、配列化するにはtoArray()する必要がある
      パラメータ:
      n -
      init -
      戻り値:
      [init, init + 1, init + 2, ..., init + n - 1]
      関連項目:
    • boxed

      protected static final Integer[] boxed(int[] a)
      int型配列をボクシングしてIntegerクラスの配列に変換する
      パラメータ:
      a -
      戻り値:
      int[] -> Integer[]
    • boxed

      protected static final Long[] boxed(long[] a)
      long型配列をボクシングしてLongクラスの配列に変換する
      パラメータ:
      a -
      戻り値:
      long[] -> Long[]
    • boxed

      protected static final Double[] boxed(double[] a)
      double型配列をボクシングしてDoubleクラスの配列に変換する
      パラメータ:
      a -
      戻り値:
      double[] -> Double[]
    • bins

      protected static final int bins(int ok, int ng, IntPredicate fn)
      めぐる式二分探索
      パラメータ:
      ok - 答えになる可能性がある臨界値
      ng - 答えになる可能性がない臨界値
      fn - 条件
      関連項目:
    • bins

      protected static final long bins(long ok, long ng, LongPredicate fn)
      めぐる式二分探索
      パラメータ:
      ok - 答えになる可能性がある臨界値
      ng - 答えになる可能性がない臨界値
      fn - 条件
      関連項目:
    • bins

      protected static final double bins(double ok, double ng, DoublePredicate fn)
      めぐる式二分探索
      パラメータ:
      ok - 答えになる可能性がある臨界値
      ng - 答えになる可能性がない臨界値
      fn - 条件
      関連項目:
    • counter

      protected static final Map<Integer,Integer> counter(int[] a)
      配列内の数値を個数を数え上げる
      パラメータ:
      a -
    • counter

      protected static final Map<Long,Integer> counter(long[] a)
      配列内の数値を個数を数え上げる
      パラメータ:
      a -
    • innerProd

      protected static final long innerProd(IntPair... p)
      C++のstd::inner_productに相当するメソッド
      パラメータ:
      p -
      戻り値:
      内積
      関連項目:
    • innerProd

      protected static final double innerProd(FloatPair... p)
      C++のstd::inner_productに相当するメソッド
      パラメータ:
      p -
      戻り値:
      内積
      関連項目:
    • intersection

      protected static final FloatPair intersection(IntPair a, long sec1, IntPair b, long sec2)
      直線a.first * x + a.second * y + sec1 = 0と直線b.first * x + b.second * y + sec2 = 0の交点を求める 連立一次方程式を解くのにも使える
      パラメータ:
      a -
      sec1 -
      b -
      sec2 -
      戻り値:
      直線a.first * x + a.second * y + sec1 = 0と直線b.first * x + b.second * y + sec2 = 0の交点
    • intersection

      protected static final FloatPair intersection(FloatPair a, double sec1, FloatPair b, double sec2)
      直線a.first * x + a.second * y + sec1 = 0と直線b.first * x + b.second * y + sec2 = 0の交点を求める 連立一次方程式を解くのにも使える
      パラメータ:
      a -
      sec1 -
      b -
      sec2 -
      戻り値:
      直線a.first * x + a.second * y + sec1 = 0と直線b.first * x + b.second * y + sec2 = 0の交点
    • corPress

      protected static final int[] corPress(int[] a)
      座標圧縮
      パラメータ:
      a -
    • corPress

      protected static final int[] corPress(long[] a)
      座標圧縮
      パラメータ:
      a -
    • runLenPress

      protected static final IntPair[] runLenPress(int[] a)
      ランレングス圧縮
      パラメータ:
      a -
      戻り値:
      ランレングス圧縮
    • runLenPress

      protected static final IntPair[] runLenPress(long[] a)
      ランレングス圧縮
      パラメータ:
      a -
      戻り値:
      ランレングス圧縮
    • runLenPress

      protected static final Pair<Character,Integer>[] runLenPress(String s)
      ランレングス圧縮
      パラメータ:
      s -
      戻り値:
      ランレングス圧縮
    • runLenRev

      protected static final long[] runLenRev(IntPair[] a)
      ランレングス圧縮したint型配列の復元
      パラメータ:
      a -
      戻り値:
      ランレングス圧縮したものを戻す
    • runLenRev

      protected static final String runLenRev(Pair<Character,Integer>[] a)
      ランレングス圧縮した文字列の復元
      パラメータ:
      a -
      戻り値:
      ランレングス圧縮したものを戻す
    • zAlgorithm

      protected static final int[] zAlgorithm(String s)
      Z-Algorithm
      パラメータ:
      s -
      関連項目:
    • manacher

      protected static final int[] manacher(String s_, boolean calcEven)
      Manacher Algorithm
      パラメータ:
      s_ -
      calcEven -
      関連項目:
    • kthRoot

      public static final long kthRoot(long n, int k)
      nのk乗根を求める
      パラメータ:
      n -
      k -
      戻り値:
      nのk乗根
    • tetration

      protected static final long tetration(long a, long b, long m)
      a↑↑bはa^a^a^...^a(aはb個ある)を表す
      パラメータ:
      a -
      b -
      m -
      戻り値:
      a↑↑b(mod m)
    • floorSum

      protected static final long floorSum(long n, long m, long a, long b)
      ∑_{i=0}^{n−1} floor((a*i+b)/m)を求める
      パラメータ:
      n -
      m -
      a -
      b -
      関連項目: