CCPC-Wannafly Winter Camp Day 1(Div 2,onsite)C分解数論
7341 ワード
問題解
abの2つの数字はもし互いに質を交換して直接aとbを出力するならば互いに質を交換しないならば10以内に暴力は解答を得ることができますどうしてこのように私も1つの結論としてはっきり覚えていません
ACコード
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;
}