此题算法不难,只是要理解题意的空行输入输出很费劲,我反复试了很多种情况,比如在scanf("%d",&s);后加空行(题目给的样例也是如此),但这是错误的,只怪我英语不好或题意本身就有歧义,n次WA后才“勇敢”地把scanf("%d",&s);后的空行删掉,结果AC了,这只是瞎猫碰上死耗子,以后恶补英语才是关键。
还有 在任何两块输入区域间 都要有空行隔开,所以使用了if(s!=0)printf("\n");(在n次WA中我也曾把此项删掉过,哎~)。输入格式如下(是本人在其他博客上复制粘贴的,非原创):第一行就是要测试数据的组数(就是那么多的数据作为一组)。 然后下边的数据就是每一小组要测试的数据 并且每一小组以0 0结束,每一行结果要换行,每一组要换行,其中最后一大组结束时不换行。否则,就会Presentation Error。我试过的。
3
10 1
2 5
3 3
6 8
0 0
2 9
3 7
0 0
6 6
5 4
9 8
0 0
这就表示有三大组,每组的测试数据个数不定,以 0 0 结束。
希望对后边的同志有所帮助
代码如下:
#include<stdio.h>
int main(){
int s,n,m,i,a,b,count,co;
scanf("%d",&s);
while(s--){
co=0;
while(scanf("%d%d",&n,&m)!=EOF){
if(n==0&&m==0)
break;
co++;
count=0;
for(a=1;a<n;a++)
for(b=a+1;b<n;b++)
if((a*a+b*b+m)%(a*b)==0)
count++;
printf("Case %d: %d\n",co,count);
}
if(s!=0)
printf("\n");
}
return 0;
}