CCPC-Wannafly Winter Camp Day 1(Div 2,onsite)C分解数論


問題解
abの2つの数字はもし互いに質を交換して直接aとbを出力するならば互いに質を交換しないならば10以内に暴力は解答を得ることができますどうしてこのように私も1つの結論としてはっきり覚えていません
ACコード
#include 
#include 
using namespace std;
typedef long long ll;

const int INF = 0x3f3f3f3f;

ll gcd(ll a, ll b)
{
	if (!b) return a;
	return gcd(b, a % b);
}
void solve(ll a, ll b)
{
	if (gcd(a, b) == 1)
	{
		printf("1
%lld %lld
"
, a, b); return; } for (int i = 2; i <= 10; i++) // for (int j = 2; j <= 10; j++) if (gcd(i, j) == 1 && gcd(a - i, b - j) == 1) { printf("2
%d %d
"
, i, j); printf("%lld %lld
"
, a - i, b - j); return; } } int main() { #ifdef LOCAL freopen("C:/input.txt", "r", stdin); #endif int T; cin >> T; while (T--) { ll a, b; scanf("%lld%lld", &a, &b); solve(a, b); } return 0; }