本道题咋一看,或许不知道从何下手,但再仔细认真读下题目便会豁然开朗。
题目的意思是说输入两个数n,m。计算式子(aa+bb +m)/(a*b)(其中0 < a < b < n,也就是说,a,b可以是满足0 < a < b < n下的任意值)判断有几对m,n可以使式子的计算结果为整数。当然题目不可能这么简单,为了增加难度,题目还有一个条件需要满足,也就需要进行多组运算,并且每一组又要进行多次计算,并且以m=n=0结束每一组的运算。(执行一次最外围的while循环为一组,执行一次 if (sum1 % sum2 == 0)语句为一次)
此题还有一点需要注意,那就是最外围的循环若是用for循环做计算出来的结果没问题但是在hdu上的提交结果会报错——输出格式有问题
for循环
while循环
下面是此题代码。
#include <stdio.h>
int main()
{
int t, m, n, a, b, sum1, sum2, num, h;
scanf("%d", &t);
while(t--) //如果用for(i=0;i<t;i++)则输出的最后会多一空行
{
h = 0;
while (scanf("%d %d", &n, &m) && (n || m))
{
h++;
num = 0;
for (a = 1; a < n; a++)
{
for (b = a + 1; b < n; b++)
{
sum1 = a * a + b * b + m;
sum2 = a * b;
if (sum1 % sum2 == 0)
{
num++;
}
}
}
printf("Case %d: %d\n", h, num); //注意输出的形式(大小写)
}
if (t!=0)
printf("\n");
}
return 0;
}