C语言编程练习24:一个数学问题
题目描述
给你两个整数n和m,请你计算有多少个整数对(a,b)满足以下条件:
当0<a<b<n时,(a^2+b^2+m)/(ab)是一个整数。
当0<a<b<n时,(a^2+b^2+m)/(ab)是一个整数。
输入
输入包含多组测试数据。每组输入为两个整数n和m(0<n<=100),当n=m=0时,输入结束。
输出
对于每组输入,输出样例标号和满足要求的整数对的个数。
样例输入 Copy
10 1
20 3
30 4
0 0
样例输出 Copy
Case 1: 2 Case 2: 4 Case 3: 5
思路:这道题对于来说、难的地方就是判断是否为整数了。用余数是否为0来判断是否为整数,余数为0就是整数。
#include <iostream> using namespace std; int main() { int n,m,t=0;//t用来记录是第几组数据 int x,y; while(scanf("%d %d",&n,&m)!=EOF) { int c=0;//记录满足条件的整数对的个数 if(n==0&&m==0) { break; } for(int i=1;i<n-1;i++) { for(int j=i+1;j<n;j++) { x=i*i+j*j+m; y=i*j; if(x%y==0)//通过余数判断是否为整数 { c++; } } } t++; printf("Case %d: %d\n",t,c); } return 0; }