#C. 二进制

    Type: Default 1000ms 256MiB

二进制

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

二进制

题目描述

在介绍十进制转二进制的篇目中,我们总会看到这样的方法:

  • 求出这个数字除以 22余数,然后将余数写在右侧,用商替换原来的数字;
  • 重复以上过程直到这个数字变为 00
  • 最后将右侧的所有余数倒序排列,得到的就是原数字的二进制形式。

小 S 也在学习二进制,不过她很懒,不想计算那么多次除法。于是她找到了你,希望你能为她写一个程序,帮助她得到上述过程中所有的余数

输入格式

一行,一个正整数 nn,表示她想要转成二进制的数字。

输出格式

输出若干行,每一行两个数字 xix_iyiy_i,表示第 ii 次除法得到的商和余数。你应该保证 yiy_i0011

样例 #1

样例输入 #1

9

样例输出 #1

4 1
2 0
1 0
0 1

样例 #2

样例输入 #2

22

样例输出 #2

11 0
5 1
2 1
1 0
0 1

样例 #3

样例输入 #3

1

样例输出 #3

0 1

提示

样例 1 解释

首先,9=2×4+19 = 2 \times 4 + 1,所以第一行输出 4 1,并令 99 变为 44; 然后,4=2×2+04 = 2 \times 2 + 0,所以第二行输出 2 0,并令 44 变为 22; 接着,2=2×1+02 = 2 \times 1 + 0,所以第三行输出 1 0,并令 22 变为 11; 最后,1=2×0+11 = 2 \times 0 + 1,所以第四行输出 0 1,并令 11 变为 00。过程结束。

样例 2 解释

首先,22=2×11+022 = 2 \times 11 + 0,所以第一行输出 11 0,并令 2222 变为 1111; 然后,11=2×5+111 = 2 \times 5 + 1,所以第二行输出 5 1,并令 1111 变为 55; 接着,5=2×2+15 = 2 \times 2 + 1,所以第三行输出 2 1,并令 55 变为 22; 再然后,2=2×1+02 = 2 \times 1 + 0,所以第四行输出 1 0,并令 22 变为 11; 最后,1=2×0+11 = 2 \times 0 + 1,所以第五行输出 0 1,并令 11 变为 00。过程结束。

数据范围

对于前 30%30 \% 的数据,保证 nn 为若干个 22 的乘积,且 1n1091 \leq n \leq 10^9; 对于另 30%30 \% 的数据,保证除法最多只进行 33 次; 对于 100%100 \% 的数据,保证 1n10181 \leq n \leq 10^{18}

青蛙跳

Not Attended
Status
Done
Rule
ACM/ICPC
Problem
3
Start at
2024-6-15 16:30
End at
2024-9-7 0:30
Duration
2000 hour(s)
Host
Partic.
32