1

こんにちは、今年の Google コード ジャムのフェア アンド スクエアの大量入力を解決しようとしています。大きな問題1に対して十分に高速に動作するコードを取得しました。ただし、入力をコンソールに貼り付けると、すべてが読み取られません。実際、何らかの理由で最後の入力を読み取るだけです。入力を貼り付けて出力を取得したい。スキャナ クラスが問題の原因ですか?

コード :

import java.util.Scanner;
class rishab {
 public static int check() {
 Scanner reader = new Scanner(System.in);
 double A=reader.nextLong();
 long B=reader.nextLong();
 int count = 0;
 long i;
 if((long)Math.sqrt(A)==Math.sqrt(A))
   i= (long)Math.sqrt(A);
 else
  i=(long)Math.sqrt(A)+1; 
for(;i<=Math.sqrt(B);i++) {
 if(i==reverse(i) && Math.pow(i,2)==reverse((long)Math.pow(i,2)))
  count++;
 }
 return(count);
 }

 public static long reverse(long number) {
  long result = 0;
  while (number != 0) {
   long remainder = number % 10;

    result = result * 10 + remainder;

    number /= 10;
 }
 return result;
 }
  public static void main(String str[]) {
 int[] a= new int[10000];

 Scanner reader = new Scanner(System.in);
 int T= reader.nextInt();

for(int i=0;i<T;i++)
 a[i]=check();
for(int i=0;i<T;i++)
 System.out.println("Case #"+(i+1)+": "+a[i]);
}
}

問題は、たとえば、入力を貼り付けた場合です。

5
1 100
2 200
1 500
1 1000000
1 1000000000

機能しませんが、各行を個別に入力すると機能します 入力を貼り付けるにはどうすればよいですか? ありがとう

4

1 に答える 1