题目链接 https://atcoder.jp/contests/abc336/tasks/abc336_c
一开始没有想到第 N 个数字与 N 之间的关系,但是在思考的过程中似乎发现了这几个数字与 "5" 有什么奇怪的联系。但是我想到这里时还没有将这道题和进制转换建立联系,只是觉得可以根据“5”的规律来推出第 N 个数字的各位组成。但是在看了其他同学的博客之后发现这道题实际上就是十进制转化为五进制,只不过将0 1 2 3 4,转化为0 2 4 6 8。
那么,这道题的思路就明晰起来了。只需按照十进制转换二进制的思路----“除二取余”,来进行“除五取余”,再将余数乘二变为偶数即可,由于从零开始计数所以要将输入的 N 减一即可。
代码如下:
`#include <bits/stdc++.h>
using namespace std;
int q[100], idx;
int main() {
long long a;
cin >> a;
a--;//从0开始先减一
if (!a) printf("0"); //a为0的情况判定
while (a)
{
q[++index] = (a % 5) * 2;
a /= 5;
}
for (int i = index; i >= 1; i--)
printf("%d", q[i]);
return 0;
}`