Mr. Frog’s Problem
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 342 Accepted Submission(s): 241
Problem Description
One day, you, a clever boy, feel bored in your math class, and then fall asleep without your control. In your dream, you meet Mr. Frog, an elder man. He has a problem for you.
He gives you two positive integers A and B, and your task is to find all pairs of integers (C, D), such that A≤C≤B,A≤D≤B and AB+BA≤CD+DC
He gives you two positive integers A and B, and your task is to find all pairs of integers (C, D), such that A≤C≤B,A≤D≤B and AB+BA≤CD+DC
Input
first line contains only one integer T (
T≤125
), which indicates the number of test cases. Each test case contains two integers A and B (
1≤A≤B≤1018
).
Output
For each test case, first output one line "Case #x:", where x is the case number (starting from 1).
Then in a new line, print an integer s indicating the number of pairs you find.
In each of the following s lines, print a pair of integers C and D. pairs should be sorted by C, and then by D in ascending order.
Then in a new line, print an integer s indicating the number of pairs you find.
In each of the following s lines, print a pair of integers C and D. pairs should be sorted by C, and then by D in ascending order.
Sample Input
2 10 10 9 27
Sample Output
Case #1: 1 10 10 Case #2: 2 9 27 27 9
Source
题目大意:
给你两个数A,B,找到所有的C,D满足其上表达式。
思路:
写一发暴力代码证明猜想:如果A==B,
输出
1
A B
否则输出
2
A B
B A
Ac代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define ll __int64
int main()
{
int t;
int kase=0;
scanf("%d",&t);
while(t--)
{
ll n,m;
scanf("%I64d%I64d",&n,&m);
if(n>m)swap(n,m);
printf("Case #%d:\n",++kase);
if(n==m)
{
printf("1\n%I64d %I64d\n",n,m);
}
else
{
printf("2\n");
printf("%I64d %I64d\n%I64d %I64d\n",n,m,m,n);
}
}
}