結果
問題 | No.2751 429-like Number |
ユーザー | beyanon |
提出日時 | 2024-05-10 23:14:21 |
言語 | C# (.NET 8.0.203) |
結果 |
WA
|
実行時間 | - |
コード長 | 24,580 bytes |
コンパイル時間 | 8,131 ms |
コンパイル使用メモリ | 168,500 KB |
実行使用メモリ | 192,424 KB |
最終ジャッジ日時 | 2024-05-10 23:14:51 |
合計ジャッジ時間 | 24,850 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 68 ms
30,976 KB |
testcase_01 | AC | 66 ms
30,976 KB |
testcase_02 | AC | 66 ms
30,976 KB |
testcase_03 | AC | 67 ms
30,848 KB |
testcase_04 | AC | 67 ms
30,848 KB |
testcase_05 | AC | 66 ms
30,976 KB |
testcase_06 | AC | 67 ms
31,232 KB |
testcase_07 | AC | 102 ms
31,744 KB |
testcase_08 | AC | 102 ms
31,872 KB |
testcase_09 | WA | - |
testcase_10 | AC | 3,146 ms
34,432 KB |
testcase_11 | AC | 193 ms
32,256 KB |
testcase_12 | WA | - |
testcase_13 | AC | 633 ms
31,336 KB |
testcase_14 | AC | 1,795 ms
31,488 KB |
testcase_15 | AC | 69 ms
31,616 KB |
testcase_16 | WA | - |
testcase_17 | WA | - |
testcase_18 | WA | - |
testcase_19 | WA | - |
testcase_20 | WA | - |
testcase_21 | WA | - |
testcase_22 | WA | - |
testcase_23 | WA | - |
testcase_24 | WA | - |
testcase_25 | WA | - |
testcase_26 | WA | - |
testcase_27 | WA | - |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (96 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
#pragma warning disable using System; using System.IO; using System.Linq; using System.Collections.Generic; using System.Runtime.CompilerServices; using static System.Console; using static System.Math; using static Util; using System.Diagnostics; #region using(AtCoder等非対応) // using pii = (int, int); // using pll = (long, long); // using pdd = (double, double); // using pss = (string, string); // using pis = (int, string); // using psi = (string, int); // using pls = (long, string); // using psl = (string, long); // using pds = (double, string); // using psd = (string, double); // using pid = (int, double); // using pdi = (double, int); // using pld = (long, double); // using pdl = (double, long); // using vb = bool[]; // using vvb = bool[][]; // using vvvb = bool[][][]; // using vi = int[]; // using vvi = int[][]; // using vvvi = int[][][]; // using vl = long[]; // using vvl = long[][]; // using vvvl = long[][][]; // using vd = double[]; // using vvd = double[][]; // using vvvd = double[][][]; // using vs = string[]; // using vvs = string[][]; // using vvvs = string[][][]; // using listb = System.Collections.Generic.List<bool>; // using llistb = System.Collections.Generic.List<System.Collections.Generic.List<bool>>; // using lllistb = System.Collections.Generic.List<System.Collections.Generic.List<System.Collections.Generic.List<bool>>>; // using listi = System.Collections.Generic.List<int>; // using llisti = System.Collections.Generic.List<System.Collections.Generic.List<int>>; // using lllisti = System.Collections.Generic.List<System.Collections.Generic.List<System.Collections.Generic.List<int>>>; // using listl = System.Collections.Generic.List<long>; // using llistl = System.Collections.Generic.List<System.Collections.Generic.List<long>>; // using lllistl = System.Collections.Generic.List<System.Collections.Generic.List<System.Collections.Generic.List<long>>>; // using listd = System.Collections.Generic.List<double>; // using llistd = System.Collections.Generic.List<System.Collections.Generic.List<double>>; // using lllistd = System.Collections.Generic.List<System.Collections.Generic.List<System.Collections.Generic.List<double>>>; // using lists = System.Collections.Generic.List<string>; // using llists = System.Collections.Generic.List<System.Collections.Generic.List<string>>; // using lllists = System.Collections.Generic.List<System.Collections.Generic.List<System.Collections.Generic.List<string>>>; // using mii = System.Collections.Generic.SortedDictionary<int, int>; // using mll = System.Collections.Generic.SortedDictionary<long, long>; // using mss = System.Collections.Generic.SortedDictionary<string, string>; // using mis = System.Collections.Generic.SortedDictionary<int, string>; // using msi = System.Collections.Generic.SortedDictionary<string, int>; // using mls = System.Collections.Generic.SortedDictionary<long, string>; // using msl = System.Collections.Generic.SortedDictionary<string, long>; // using umii = System.Collections.Generic.Dictionary<int, int>; // using umll = System.Collections.Generic.Dictionary<long, long>; // using umss = System.Collections.Generic.Dictionary<string, string>; // using umis = System.Collections.Generic.Dictionary<int, string>; // using umsi = System.Collections.Generic.Dictionary<string, int>; // using umls = System.Collections.Generic.Dictionary<long, string>; // using umsl = System.Collections.Generic.Dictionary<string, long>; // using seti = System.Collections.Generic.SortedSet<int>; // using setl = System.Collections.Generic.SortedSet<long>; // using sets = System.Collections.Generic.SortedSet<string>; // using useti = System.Collections.Generic.HashSet<int>; // using usetl = System.Collections.Generic.HashSet<long>; // using usets = System.Collections.Generic.HashSet<string>; #endregion class Util { public static double PI = 3.141592653589793; public static long m107 = 1000000007; public static long m998 = 998244353; public static int a10_9 = 1000000000; public static long a10_18 = 1000000000000000000; public static int iinf = 1 << 30; public static long linf = (1l << 61) - (1l << 31); /// <summary>1行読みこみ</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string read() => ReadLine(); /// <summary>1行読みこみ</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string readln() => ReadLine(); /// <summary>1行読みこみ</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string readline() => ReadLine(); /// <summary>改行なし出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void write() => Write(""); /// <summary>改行なし出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void write<T>(T value) => Write(value); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void writeln() => WriteLine(""); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void writeln<T>(T value) => WriteLine(value); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void writeline() => WriteLine(""); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void writeline<T>(T value) => WriteLine(value); /// <summary>改行なし出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void print() => Write(""); /// <summary>改行なし出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void print<T>(T value) => Write(value); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void println() => WriteLine(""); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void println<T>(T value) => WriteLine(value); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printline() => WriteLine(""); /// <summary>改行あり出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printline<T>(T value) => WriteLine(value); /// <summary>任意の要素数・初期値の配列を作って初期化する</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T[] makearr<T>(int num, T value) { var arr = new T[num]; for (int i = 0; i < num; ++i) arr[i] = value; return arr; } // end of func /// <summary>任意の要素数・初期値の2次元配列を作って初期化する</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T[][] makearr2<T>(int height, int width, T value) { var arr = new T[height][]; for (int i = 0; i < height; ++i) { arr[i] = new T[width]; for (int j = 0; j < width; ++j) { arr[i][j] = value; } } return arr; } // end of func /// <summary>任意の要素数・初期値の3次元配列を作って初期化する</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T[][][] makearr3<T>(int height, int width, int depth, T value) { var arr = new T[height][][]; for (int i = 0; i < height; ++i) { arr[i] = new T[width][]; for (int j = 0; j < width; ++j) { arr[i][j] = new T[depth]; for (int k = 0; k < depth; ++k) { arr[i][j][k] = value; } } } return arr; } // end of func /// <summary>任意の要素数・初期値のListを作って初期化する</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static List<T> makelist<T>(int num, T value) { return new List<T>(makearr(num, value)); } // end of func /// <summary>任意の要素数・初期値の2次元Listを作って初期化する</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static List<List<T>> makelist2<T>(int height, int width, T value) { var arr = new List<List<T>>(); for (int i = 0; i < height; ++i) { arr.Add(makelist(width, value)); } return arr; } // end of func /// <summary>任意の要素数・初期値の3次元Listを作って初期化する</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static List<List<List<T>>> makelist3<T>(int height, int width, int depth, T value) { var arr = new List<List<List<T>>>(); for (int i = 0; i < height; ++i) { arr[i] = new List<List<T>>(); for (int j = 0; j < width; ++j) { arr[i].Add(makelist(depth, value)); } } return arr; } // end of func /// <summary>1次元配列のディープコピーを行う</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T[] copyarr<T>(T[] arr) { T[] brr = new T[arr.Length]; Array.Copy(arr, brr, arr.Length); return brr; } // end of func /// <summary>2次元配列のディープコピーを行う</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T[][] copyarr2<T>(T[][] arr) { T[][] brr = new T[arr.Length][]; for (int i = 0; i < arr.Length; ++i) { brr[i] = new T[arr[i].Length]; Array.Copy(arr[i], brr[i], arr[i].Length); } return brr; } // end of func /// <summary>3次元配列のディープコピーを行う</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static T[][][] copyarr3<T>(T[][][] arr) { T[][][] brr = new T[arr.Length][][]; for (int i = 0; i < arr.Length; ++i) { brr[i] = new T[arr[i].Length][]; for (int j = 0; j < arr[i].Length; ++j) { brr[i][j] = new T[arr[i][j].Length]; Array.Copy(arr[i][j], brr[i][j], arr[i][j].Length); } } return brr; } // end of func /// <summary>1次元Listのディープコピーを行う</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static List<T> copylist<T>(List<T> list) { return new List<T>(list); } // end of func /// <summary>2次元Listのディープコピーを行う</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static List<List<T>> copylist2<T>(List<List<T>> list) { List<List<T>> list2 = new List<List<T>>(); for (int i = 0; i < list.Count; ++i) { list2.Add(new List<T>(list[i])); } return list2; } // end of func /// <summary>3次元Listのディープコピーを行う</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static List<List<List<T>>> copylist3<T>(List<List<List<T>>> list) { List<List<List<T>>> list2 = new List<List<List<T>>>(); for (int i = 0; i < list.Count; ++i) { List<List<T>> tmplist = new List<List<T>>(); for (int j = 0; j < list[i].Count; ++i) { tmplist.Add(new List<T>(list[i][j])); } list2.Add(tmplist); } return list2; } // end of func /// <summary>1次元Listを出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printlist<T>(List<T> list) { WriteLine(string.Join(" ", list)); } // end of func /// <summary>1次元配列を出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printlist<T>(T[] list) { WriteLine(string.Join(" ", list)); } // end of func /// <summary>2次元リストを出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printlist2<T>(List<List<T>> list) { foreach (var l in list) { WriteLine(string.Join(" ", l)); } } // end of func /// <summary>2次元配列を出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printlist2<T>(T[][] list) { foreach (var l in list) { WriteLine(string.Join(" ", l)); } } // end of func /// <summary>1次元Listを出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printarr<T>(List<T> list) { WriteLine(string.Join(" ", list)); } // end of func /// <summary>1次元配列を出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printarr<T>(T[] list) { WriteLine(string.Join(" ", list)); } // end of func /// <summary>2次元リストを出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printarr2<T>(List<List<T>> list) { foreach (var l in list) { WriteLine(string.Join(" ", l)); } } // end of func /// <summary>2次元配列を出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printarr2<T>(T[][] list) { foreach (var l in list) { WriteLine(string.Join(" ", l)); } } // end of func /// <summary>ジェネリックを出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printiter<T>(IEnumerable<T> generic) { foreach (var it in generic) { Write(it + " "); } WriteLine(); } // end of func /// <summary>ジェネリックを出力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void printlineiter<T>(IEnumerable<T> generic) { foreach (var it in generic) { WriteLine(it + " "); } } // end of func /// <summary>数字を1つint型で読み込み</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int readint() { return int.Parse(ReadLine()); } // end of func /// <summary>数字を1つlong型で読み込み</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static long readlong() { return long.Parse(ReadLine()); } // end of func /// <summary>入力を空白区切りのstringで返す(変則的な入力に対応)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string[] readsplit() { return ReadLine().Split(' '); } // end of func /// <summary>数字をスペース区切りでint型で入力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static int[] readints() { return ReadLine().Split(' ').Select(_ => int.Parse(_)).ToArray(); } // end of func /// <summary>数字をスペース区切りでlong型で入力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static long[] readlongs() { return ReadLine().Split(' ').Select(_ => long.Parse(_)).ToArray(); } // end of func /// <summary>数字をスペース区切りでfloat型で入力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static float[] readfloats() { return ReadLine().Split(' ').Select(_ => float.Parse(_)).ToArray(); } // end of func /// <summary>数字をスペース区切りでdouble型で入力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static double[] readdoubles() { return ReadLine().Split(' ').Select(_ => double.Parse(_)).ToArray(); } // end of func /// <summary>文字列をスペース区切りで入力</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string[] readstrings() { return ReadLine().Split(' '); } // end of func /// <summary>読み込んだint2つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (int, int) readintt2() { var arr = readints(); return (arr[0], arr[1]); } // end of func /// <summary>読み込んだint3つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (int, int, int) readintt3() { var arr = readints(); return (arr[0], arr[1], arr[2]); } // end of func /// <summary>読み込んだint4つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (int, int, int, int) readintt4() { var arr = readints(); return (arr[0], arr[1], arr[2], arr[3]); } // end of func /// <summary>読み込んだlong2つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (long, long) readlongt2() { var arr = readlongs(); return (arr[0], arr[1]); } // end of func /// <summary>読み込んだ数long3つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (long, long, long) readlongt3() { var arr = readlongs(); return (arr[0], arr[1], arr[2]); } // end of func /// <summary>読み込んだ数long4つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (long, long, long, long) readlongt4() { var arr = readlongs(); return (arr[0], arr[1], arr[2], arr[3]); } // end of func /// <summary>読み込んだfloat2つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (float, float) readfloatt2() { var arr = readfloats(); return (arr[0], arr[1]); } // end of func /// <summary>読み込んだfloat3つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (float, float, float) readfloatt3() { var arr = readfloats(); return (arr[0], arr[1], arr[2]); } // end of func /// <summary>読み込んだfloat4つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (float, float, float, float) readfloatt4() { var arr = readfloats(); return (arr[0], arr[1], arr[2], arr[3]); } // end of func /// <summary>読み込んだdouble2つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (double, double) readdoublet2() { var arr = readdoubles(); return (arr[0], arr[1]); } // end of func /// <summary>読み込んだdouble3つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (double, double, double) readdoublet3() { var arr = readdoubles(); return (arr[0], arr[1], arr[2]); } // end of func /// <summary>読み込んだdouble4つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (double, double, double, double) readdoublet4() { var arr = readdoubles(); return (arr[0], arr[1], arr[2], arr[3]); } // end of func /// <summary>読み込んだstring2つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (string, string) readstringt2() { var arr = ReadLine().Split(' '); return (arr[0], arr[1]); } // end of func /// <summary>読み込んだstring3つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (string, string, string) readstringt3() { var arr = ReadLine().Split(' '); return (arr[0], arr[1], arr[2]); } // end of func /// <summary>読み込んだstring3つをタプルで返す(分解代入用)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (string, string, string, string) readstringt4() { var arr = ReadLine().Split(' '); return (arr[0], arr[1], arr[2], arr[3]); } // end of func /// <summary>先頭に要素数(int)と次にでかい数字1つ</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (int, long) readintlongt2() { var arr = ReadLine().Split(' ').Select(x => long.Parse(x)).ToArray(); return ((int)arr[0], arr[1]); } // end of func /// <summary>先頭に要素数(int)と次にでかい数字2つ</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (int, long, long) readintlongt3() { var arr = ReadLine().Split(' ').Select(x => long.Parse(x)).ToArray(); return ((int)arr[0], arr[1], arr[2]); } // end of func /// <summary>先頭に要素数(int)と次にでかい数字2つ</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (int, long, long, long) readintlongt4() { var arr = ReadLine().Split(' ').Select(x => long.Parse(x)).ToArray(); return ((int)arr[0], arr[1], arr[2], arr[3]); } // end of func /// <summary>小数点以下を16桁で表示(精度が厳しい問題に対応)</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteLine16<T>(T num) { WriteLine(string.Format("{0:0.################}", num)); } // end of func /// <summary>整数を二進数で表示</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteLine2bit(int num) { WriteLine(Convert.ToString(num, 2)); } // end of func /// <summary>整数を二進数で表示</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteLine2bit(long num) { WriteLine(Convert.ToString(num, 2)); } // end of func /// <summary>整数を2進数表現した文字列に</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string IntToString2bit(int num) { return Convert.ToString(num, 2); } // end of func /// <summary>整数を2進数表現した文字列に</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string LongToString2bit(long num) { return Convert.ToString(num, 2); } // end of func /// <summary>出力のflush削除</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void preprocess() { var sw = new StreamWriter(Console.OpenStandardOutput()) { AutoFlush = false }; System.Console.SetOut(sw); } // end of func /// <summary>出力をflush</summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void finalprocess() { System.Console.Out.Flush(); } // end of func } // end of class /// 座標に便利(値型だけど16byteまではstructが速い) struct YX { public int y; public int x; public YX(int y, int x) { this.y = y; this.x = x; } } // end of class /// グラフをするときに(値型だけど16byteまではstructが速い) struct Edge { public int from; public int to; public long cost; public Edge(int from, int to, long cost) { this.from = from; this.to = to; this.cost = cost; } } // end of class class Kyopuro { public static void Main() { preprocess(); var kyopuro = new Kyopuro(); kyopuro.Solve(); finalprocess(); } // end of func [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool IsPrime(long num) { if (num == 2) return true; // 2未満の数と偶数は素数ではない if (num < 2l || num % 2l == 0) return false; // n - 1 = 2^s * d と表す long s = 0; long d = num - 1; while (d % 2l == 0) { ++s; d /= 2l; } // var rand = new long[] { 2, 325, 9375, 28178, 450775, 9780504, 1795265022 }; // foreach (var r in rand) { var rand = new Random(); for (int i = 0; i < 10; ++i) { long r = rand.NextInt64(2, num - 1); long x = KurikaeshiPow(r, d, num); if (x == 1l || x == num - 1l) continue; for (long j = 0; j < s - 1l; ++j) { x = KurikaeshiPow(x, 2, num); if (x == 1l) return false; if (x == num - 1) break; } if (x != num - 1) return false; } return true; } // a^b mod n を計算する関数 public static long ModPow(long a, long b, long n) { long result = 1; a %= n; while (b > 0) { if (b % 2 == 1) result = (result * a) % n; b /= 2; a = (a * a) % n; } return result; } /// a^nを繰り返し二乗法 [MethodImpl(MethodImplOptions.AggressiveInlining)] public long KurikaeshiPow(long a, long n, long mod = long.MaxValue) { if (n == 0) return 1; if (n == 1) return a % mod; long ret = 1; while (n > 0) { // a^(2^k) をかけていく k = nを二進数表現したときに1が立っているbit if ((n & 1) == 1) ret = (ret * a) % mod; n >>= 1; a = (a * a) % mod; } return ret; } // end of method public void Solve() { // writeline(IsPrime(2)); // return; // var sw = new Stopwatch(); // sw.Start(); long lmax = 100000l; var prr = new List<long>(new long[1] { 2 }); var arr = new bool[lmax + 1]; for (int i = 2; i <= lmax; i += 2) arr[i] = false; for (int i = 3; i <= lmax; i += 2) { if (arr[i]) continue; prr.Add(i); int ii = i; while (ii <= lmax) { arr[ii] = true; ii += i; } } // sw.Stop(); // writeline(sw.Elapsed); // return; int q = readint(); for (int i = 0; i < q; ++i) { long a = readlong(); foreach (long p in prr) { if (a % p != 0) continue; a /= p; break; } if (a == 1) { writeline("No"); continue; } foreach (long p in prr) { if (a % p != 0) continue; a /= p; break; } if (a == 1) { writeline("No"); continue; } writeline(IsPrime(a) ? "Yes" : "No"); } } // end of method } // end of class