AI智能
改变未来

A Mathematical Curiosity

Problem Description

Given two integers n and m, count the number of pairs of integers (a,b) such that 0 < a < b < n and (a2+b2 +m)/(ab) is an integer.

This problem contains multiple test cases!

The first line of a multiple input is an integer N, then a blank line followed by N input blocks. Each input block is in the format indicated in the problem description. There is a blank line between input blocks.

The output format consists of N output blocks. There is a blank line between output blocks.

Input

You will be given a number of cases in the input. Each case is specified by a line containing the integers n and m. The end of input is indicated by a case in which n = m = 0. You may assume that 0 < n <= 100.

Output

For each case, print the case number as well as the number of pairs (a,b) satisfying the given property. Print the output for each case on one line in the format as shown below.

Sample Input

1

10 1
20 3
30 4
0 0

Sample Output

Case 1: 2
Case 2: 4
Case 3: 5

Source

East Central North America 1999, Practice

首先,很重要的一点就是做英文题目一定要读懂题!!!!
这道题的大概意思是:先给定一个N,空行之后有N个块,每块都有不定组测试用例,每组两个数 m,n;当m,n都等于零时输入结束,当a和b满足0<a<b<n且使(a2+b2 +m)/(ab) 的值为整数时,那么这对a和b就是一组,输出这样的“组数”,并且输出行间有空行。注意下格式就好了

代码:

#include<bits/stdc++.h>using namespace std;int main(){int N;scanf(\"%d\",&N);while(N--){int m,n;int t=1;while(~scanf(\"%d%d\",&n,&m)){if(m==0&&n==0)break;int a,b;int cnt=0;for(a=1;a<n;a++){for(b=a+1;b<n;b++){if((a*a+b*b+m)%(a*b)==0)//判断整数的条件 取模得0{cnt++;}}}printf(\"Case %d: \",t++);printf(\"%d\\n\",cnt);}if(N){//输出块之间有空行printf(\"\\n\");}}return 0;}
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » A Mathematical Curiosity