提出 #70622061


ソースコード 拡げる

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

#pragma warning disable CS8603, CS8604, CS8602,8618


namespace ProblemE
{
    internal class TEST
    {
        public static void Main()
        {
            Sol mySol = new Sol();
            mySol.Solve();
        }
    }

    internal class Sol
    {
        public void Solve()
        {
            var sb = new StringBuilder();
            for(;T>0;T--) {
                A = rs();
                B = rs();
                int N = A.Length;
                var AAB = A + A + B;
				var rh0 = new RollingHash(AAB, 2525, 1000000000 + 7);
				var rh1 = new RollingHash(AAB, 5252, 1000000000 + 9);

                var m0 = rh0.GetHash(N + N, N);
                var m1 = rh1.GetHash(N + N, N);
                int idx = -1;
                for(int i=0;i<N;i++){
                    var r0 = rh0.GetHash(i, N);
                    var r1 = rh1.GetHash(i, N);
                    if(r0 == m0 && r1 == m1){
                        idx = i;
                        break;
                    }
                }

                sb.AppendLine(idx.ToString());
			}
            Console.Write(sb.ToString());


		}
        int T;
        String A, B;
        public Sol()
        {
            T = ri();
        }

        static String rs() { return Console.ReadLine(); }
        static int ri() { return int.Parse(Console.ReadLine()); }
        static long rl() { return long.Parse(Console.ReadLine()); }
        static double rd() { return double.Parse(Console.ReadLine()); }
        static String[] rsa(char sep = ' ') { return Console.ReadLine().Split(sep); }
        static int[] ria(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e => int.Parse(e)); }
        static long[] rla(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e => long.Parse(e)); }
        static double[] rda(char sep = ' ') { return Array.ConvertAll(Console.ReadLine().Split(sep), e => double.Parse(e)); }
        static T[] mka<T>(int n, T ini) { T[] ret = new T[n]; for (int i = 0; i < n; i++) ret[i] = ini; return ret; }
        static T[][] mka<T>(int n, int m, T ini) { T[][] ret = new T[n][]; for (int i = 0; i < n; i++) ret[i] = mka(m, ini); return ret; }
        static T[][][] mka<T>(int n, int m, int l, T ini) { T[][][] ret = new T[n][][]; for (int i = 0; i < n; i++) ret[i] = mka(m, l, ini); return ret; }
        static T[][][][] mka<T>(int n, int m, int l, int k, T ini) { T[][][][] ret = new T[n][][][]; for (int i = 0; i < n; i++) ret[i] = mka(m, l, k, ini); return ret; }
        static T[] mka<T>(int n) where T : new() { T[] ret = new T[n]; for (int i = 0; i < n; i++) ret[i] = new T(); return ret; }
        static T[][] mka<T>(int n, int m) where T : new() { T[][] ret = new T[n][]; for (int i = 0; i < n; i++) ret[i] = mka<T>(m); return ret; }
        static T[][][] mka<T>(int n, int m, int l) where T : new() { T[][][] ret = new T[n][][]; for (int i = 0; i < n; i++) ret[i] = mka<T>(m, l); return ret; }
        static T[][][][] mka<T>(int n, int m, int l, int k) where T : new() { T[][][][] ret = new T[n][][][]; for (int i = 0; i < n; i++) ret[i] = mka<T>(m, l, k); return ret; }

    }
	class RollingHash {

		long[] Hash;
		long[] Base;
		long[] BaseInv;
		String S;
		long mod;
		int N;

		public RollingHash(String s_, long base_ = 2525, long mod_ = (long)1e9 + 7) {
			mod = mod_;
			S = s_;
			N = S.Length;
			Hash = new long[N + 1];

			Base = new long[N + 1];
			Base[0] = 1;
			Base[1] = base_;

			for (int i = 1; i < N; i++) {
				Base[i + 1] = Base[i] * Base[1];
				if (Base[i + 1] >= mod) Base[i + 1] %= mod;
			}

			Hash[0] = 0;
			Hash[1] = (long)S[0];
			for (int i = 1; i < N; i++) {
				Hash[i + 1] = Hash[i] * Base[1] + (long)S[i];
				if (Hash[i + 1] >= mod) Hash[i + 1] %= mod;
			}
		}

		public long GetHash(int strt, int len) {
			//return hash of S.Substring(strt,len);
			if (len == 0) return 0;
			if (strt + len >= N) len = N - strt;
			long ret = Hash[strt + len] + mod - (Hash[strt] * Base[len] >= mod ? Hash[strt] * Base[len] % mod : Hash[strt] * Base[len]);
			return ret >= mod ? ret % mod : ret;
		}


	}
}

提出情報

提出日時
問題 E - Shift String
ユーザ kuuso
言語 C# 13.0 (.NET 9.0.8)
得点 450
コード長 4330 Byte
結果 AC
実行時間 194 ms
メモリ 135708 KiB

コンパイルエラー

/judge/Main.cs(81,10): warning CS0169: The field 'RollingHash.BaseInv' is never used [/judge/Main.csproj]

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 1
AC × 52
セット名 テストケース
Sample sample_01.txt
All killer_01.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt
ケース名 結果 実行時間 メモリ
killer_01.txt AC 107 ms 30224 KiB
sample_01.txt AC 29 ms 24872 KiB
test_01.txt AC 30 ms 25108 KiB
test_02.txt AC 29 ms 25128 KiB
test_03.txt AC 29 ms 25088 KiB
test_04.txt AC 29 ms 25000 KiB
test_05.txt AC 30 ms 26072 KiB
test_06.txt AC 40 ms 29676 KiB
test_07.txt AC 40 ms 29548 KiB
test_08.txt AC 152 ms 29928 KiB
test_09.txt AC 151 ms 30080 KiB
test_10.txt AC 156 ms 30804 KiB
test_11.txt AC 156 ms 30940 KiB
test_12.txt AC 168 ms 32484 KiB
test_13.txt AC 167 ms 32328 KiB
test_14.txt AC 174 ms 58584 KiB
test_15.txt AC 176 ms 90684 KiB
test_16.txt AC 190 ms 135484 KiB
test_17.txt AC 191 ms 135608 KiB
test_18.txt AC 167 ms 133680 KiB
test_19.txt AC 166 ms 133952 KiB
test_20.txt AC 168 ms 133728 KiB
test_21.txt AC 168 ms 133924 KiB
test_22.txt AC 167 ms 133756 KiB
test_23.txt AC 165 ms 133604 KiB
test_24.txt AC 167 ms 133600 KiB
test_25.txt AC 167 ms 134032 KiB
test_26.txt AC 173 ms 135632 KiB
test_27.txt AC 176 ms 135484 KiB
test_28.txt AC 193 ms 135448 KiB
test_29.txt AC 193 ms 135556 KiB
test_30.txt AC 192 ms 135448 KiB
test_31.txt AC 192 ms 135424 KiB
test_32.txt AC 188 ms 135452 KiB
test_33.txt AC 188 ms 135420 KiB
test_34.txt AC 192 ms 135276 KiB
test_35.txt AC 186 ms 135364 KiB
test_36.txt AC 191 ms 135376 KiB
test_37.txt AC 193 ms 135448 KiB
test_38.txt AC 193 ms 135448 KiB
test_39.txt AC 194 ms 135608 KiB
test_40.txt AC 178 ms 135312 KiB
test_41.txt AC 180 ms 135708 KiB
test_42.txt AC 191 ms 135380 KiB
test_43.txt AC 171 ms 135296 KiB
test_44.txt AC 192 ms 135380 KiB
test_45.txt AC 193 ms 135448 KiB
test_46.txt AC 191 ms 135624 KiB
test_47.txt AC 47 ms 30076 KiB
test_48.txt AC 48 ms 30320 KiB
test_49.txt AC 194 ms 135484 KiB
test_50.txt AC 193 ms 135632 KiB