Given two integers n and m, count the number of pairs of integers (a,b) such that 0 < a < b < n and (a^2+b^2 +m)/(ab) is an integer.This problem contains multiple test cases!
The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.The output format consists of N output blocks. There is a blank line between output blocks.Input
You will be given a number of cases in the input. Each case is specified by a line containing the integers n and m. The end of input is indicated by a case in which n = m = 0. You may assume that 0 < n <= 100.Output
For each case, print the case number as well as the number of pairs (a,b) satisfying the given property. Print the output for each case on one line in the format as shown below.Sample Input
110 1
20 3
30 4
0 0
Sample Output
Case 1: 2
Case 2: 4
Case 3: 5我的代码是:  可就是不对错在哪呢?
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str = input.nextLine();
int num = Integer.parseInt(str);

ArrayList<String> numb = new ArrayList<String>();

while(true)
{
String s = input.nextLine();
String b=s.replaceAll(" ","");
if(b.equals("00"))
break;
numb.add(s);
}
int biao = 0;
for(int i=0;i<numb.size();i++)
{
String s=(String)numb.get(i);

if(s.equals("")&&i==0)
{
biao=0;
}
else if(s.equals("")&&i!=0)
{
System.out.println();
biao=0;
}
else
{
biao++;
int sum=0;
    String[]s1=s.split(" ");
    int n = Integer.parseInt(s1[0]);
    int m = Integer.parseInt(s1[1]);
    for(int a=1 ; a<=n-2 ;a++)
    {
     for(int b=a+1 ;b<=n-1 ;b++)
     {
     if((a*a+b*b+m)%(a*b)==0)
     {   
     sum++;
     }
     }
    }
    System.out.println("Case "+biao+": "+sum);
}
}
}
}

解决方案 »

  1.   

    我试了下,对Sample Input,输出结果是对的呀~
    不过,刚复制下来时,好像多了好多空格,导致在字符串解析处出错了://这里会严格匹配空格数,输入的空格数与这里不一致的话就可能有问题
    String[]s1=s.split(" ");
    int n = Integer.parseInt(s1[0]);
    int m = Integer.parseInt(s1[1]);
      

  2.   

    逻辑没问题 只是按照lz程序里的输入格式就得这样输入
    110   1
    20   3
    30   4
    00才能得到如下输出
    Case   1:   2
    Case   2:   4
    Case   3:   5貌似与题设要求不符