原题链接:C - Even Digits (atcoder.jp)https://atcoder.jp/contests/abc336/tasks/abc336_c?lang=en
根据题目可知,好整数的定义是:数字的每一位都是一个偶数(即0,2,4,6,8).
比如第五个数是8,而第六个数是20,它的个位上加了一个2,十位上也进了一个二。
所以我们可以看出,它的每一位都有五个数,即0 2 4 6 8。
那么我们可以采用五进制的思维来编译这道题。
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
int n;
cin >> n;
if (n == 1)//排除“1”的情况。
{
cout << 0;
return 0;
}
n -= 1;
int a[30];
for (int i = 0; i < 30; i++)//初始化。
{
a[i] = 0;
}
int cnt = 1;
for (cnt = 1; n > 0; cnt++)
{
int t = n % 5;//计算转化为五进制之后,每一位的值。
a[cnt] = 2 * t;//将五进制边为十进制。
n /= 5;
}
for (int i = cnt-1; i >= 1; i--)//逆序输出
{
cout << a[i];
}
return 0;
}