[ARC051B] 互除法
题意翻译
## 题目描述
高桥君学习了欧几里得算法,他很好奇它能以多快的速度运行。
因此,他写了以下代码。
```cpp
#include <stdio.h>
int counter = 0;
int gcd(int a, int b) {
if (b == 0) return a;
counter++;
return gcd(b, a%b);
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
gcd(a, b);
printf("%d\n", counter);
}
```
这个代码输入两个整数,然后用欧几里得计算它们的 $\gcd$,然后输出它递归了多少次的代码。 你想让这个程序输出各种各样的值。
具体来说,输入一个 $K$,输出一组可以使得这个程序的输出为 $K$ 的 $A$、$B$。
## 输入格式
一个正整数 $K$。
## 输出格式
一行,两个正整数 $A$ 和$B$。
但是,必须满足 $1\le A,B\le 10^9$。
## 说明\提示
对于 $30\%$ 的数据,$1\le K \le 10$;
对于 $100\%$ 的数据,$1\le K \le 40$。
只输出其中一种可能的解即可。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc051/tasks/arc051_b
高橋君は、ユークリッドの互除法というアルゴリズムを学びましたが、これがどのぐらいの速度で動くのか気になりました。
なので、以下のようなC言語のコードを書きました。
```
#include <stdio.h>
int counter = 0;
int gcd(int a, int b) {
if (b == 0) return a;
counter++;
return gcd(b, a%b);
}
int main() {
int a, b;
scanf("%d %d", &a, &b);
gcd(a, b);
printf("%d\n", counter);
}
```
これは、$ 2 $ つの整数を標準入力から受け取り、そのgcdをユークリッドの互除法で求め、求める際に何回再帰したかを出力するコードです。
あなたは、このプログラムにいろんな値を出力させたくなりました。
具体的には、$ K $ が与えられるので、このプログラムの出力が $ K $ となるような $ a,\ b $ を一組求めてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ K $
输出格式
$ a,\ b $ を空白区切りで $ 1 $ 行に出力せよ。ただし、以下の制約を満たしていなければいけない。
$ 1\ ≦\ a,\ b\ ≦\ 1,000,000,000 $
输入输出样例
输入样例 #1
1
输出样例 #1
1 1
输入样例 #2
3
输出样例 #2
4 5
输入样例 #3
12
输出样例 #3
314159265 358979323
说明
### 制約
- $ 1\ ≦\ K\ ≦\ 40 $
ただし、以下の制約を満たすテストケースにすべて正解すれば $ 30 $ 点が与えられる。
- $ 1\ ≦\ K\ ≦\ 10 $
### Sample Explanation 3
どの入出力例も、これ以外にも条件を満たす出力はたくさんあります。