方法:枚举
做这道题,在第十行的位置WA了很多次,(n || m)不能写成(n + m),m可能是负数,一直没注意到,导致不停的WA.......
#include <stdio.h> int main() { int T,n,m,a,b,ans,p = 0; scanf("%d",&T); while(T--) { if(p ++) printf("\n"); int num = 1; while(scanf("%d%d",&n,&m) && (n || m)) { ans = 0; for(a = 1 ; a < n ; a ++) for(b = a + 1 ; b < n ; b ++) if( (a*a + b*b + m)%(a*b) == 0 ) ans ++; printf("Case %d: %d\n",num++,ans); } } return 0; }