/* HDOJ1017 看上去很简单的一道题,数据也不大。 直接简单粗暴就可以 不过果然的英语渣渣看题又出现了失误 blocks在题中的意思为:数据块 题意正解: t组数据块,每组的数据量不固定,读入n和m判断到0 0为止 另外,读入数据的时候可以忽略掉空行的处理,直接读入整数即可! */ #include <iostream> #include <algorithm> #include <stdio.h> #include <math.h> #include <map> #include <set> #include <vector> #include <string> #include <cstring> #include <sstream> using namespace std; #define input freopen("input.txt","r",stdin); #define output freopen("output.txt","w",stdout); #define For1(i,a,b) for (i=a;i<b;i++) #define For2(i,a,b) for (i=a;i<=b;i++) #define Dec(i,a,b) for (i=a;i>b;i--) #define Dec2(i,a,b) for (i=a;i>=b;i--) #define Sca_d(x) scanf("%d",&x) #define Sca_s(x) scanf("%s",x) #define Sca_c(x) scanf("%c",&x) #define Sca_f(x) scanf("%f",&x) #define Sca_lf(x) scanf("%lf",&x) #define Fill(x,a) memset(x,a,sizeof(x)) #define MAXN 0x7fffffff int main() { //input; int t,n,m,i,j; cin>>t; while(t--) { int Case=0; //getchar(); while(cin>>n>>m) { int ans=0; if (!n&&!m) break; printf("Case %d: ",++Case); For1(i,1,n) For1(j,i+1,n) if ((i*i+j*j+m)%(i*j)==0) ans++; cout<<ans<<endl; } if (t) cout<<endl;//注意什么时候换行 } return 0; }