実現したいこと
・TechfulのサイトでXORの問題を解いているのですが、何回試してもRUNTIME ERRORが出力されてしまいます
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
前提
[解いている問題]
あなたは M+1 個の N 桁の 2 進数 I1,I2,…,IM+1 と、それらを全て XOR した結果得られる 2 進数 P を持っていました。
しかし、あなたは I1,I2,…,IM+1 のうち、一つを紛失してしまいました。
あなたが現在持っている M 個の 2 進数 J1,J2,…,JM と、2 進数 P から紛失した 2 進数を復元してください。
[入力される値]
N M
P
J_1
J_2
J_3
.
.
.
J_M
・1 行目に 2 進数の桁数 N と、現在持っている 2 進数の数 Mが与えられます。
・2行目に現在持っている M 個の 2 進数と紛失した 2 進数を全て XOR することで得られる 2進数 Pが与えられます。
・3行目から M 行にわたって、現在持っている 2 進数Jiが与えられます。
また、全ての2進数は '1' または '0' からなる文字列で与えられます。
[期待される出力値]
紛失した 2 進数を出力してください。 ただし、出力はゼロ埋めを行って、N 桁ちょうどにしてください。
[制約]
・N,M: 整数
・P,Ji: '1' または '0' からなる文字列
・10≤ N ≤ 50
・1≤ M ≤ 500
・|P|= N
・|Ji|= N
・ただし、|P|,|Ji| はそれぞれ文字列 P,Ji の長さを表す。
サンプルケース
サンプルケース①の入力値
10 1 1010100110 0101001000
サンプルケース①の出力値
1111101110
サンプルケース②の入力値
10 3 0100101001 1010100110 0101001000 0001010011
サンプルケース②の出力値
1010010100
発生している問題・エラーメッセージ
現在10個あるテストケースの内2つは「PASS」になっていますが、残りの8つはRUNTIME ERRORになっています。
RUNTIME ERROR
該当のソースコード
Java
1import java.util.ArrayList; 2import java.util.List; 3import java.util.Scanner; 4public class Main { 5 public static void main(String[] args) { 6 Scanner scnn = new Scanner(System.in); 7 int N = scnn.nextInt(); 8 int M = scnn.nextInt(); 9 10 String p, b; 11 List<String> j = new ArrayList<>(); 12 p = scnn.next(); //p (XORした答え) 13 int p2sin = Integer.parseInt(p, 2);//pを10進数に変換 14 15 int []j2sin=new int[M]; 16 for (int i = 0; i < M; i++) { 17 b = scnn.next();//j 18 j2sin[i] = Integer.parseInt(b, 2);//jを10進数に変換 19 j.add(i, b); 20 } 21 int s=j2sin[0]; 22 for(int k=0;k<M-1;k++){ 23 s=s^j2sin[k+1]; 24 } 25 s=s^p2sin;//660 26 String o=Integer.toBinaryString (s);//2進数に変換 27 if(o.length()!=N){ //0でN桁にする 28 System.out.println(padLeft(o, N)); 29 }else{ 30 System.out.println (o); 31 } 32 } 33//N桁じゃない場合ゼロパディング 34 public static String padLeft(String s, int n) { 35 return String.format("%0" + n + "d", Integer.parseInt(s)); 36 } 37}
試したこと
・Techfulの仕様があまりわかっておらず、Nの制約「10≤ N ≤ 50」の範囲外になったら「System.exit(0)」で終了させたり、p,jが"0"もしくは"1"でない場合は入力を受け付けないようにするなどしてみましたがどうしてもRUNTIME ERRORが出てしまいます。
・サンプルケースの値は期待される出力値になっているのでアルゴリズム自体は合っているのかなと勝手に思っています。

回答1件
あなたの回答
tips
プレビュー