本题要求将数字的各位相加,并判断原数字是否能整除相加后的数字,输入的数字为指定输出的第n个满足条件的数字。
从样例中可知会有0,2,4,6,8五种情况,若将这些数除2可以得到0,1,2,3,4,10,11,12,13,14,20,会发现这些数字逢五进一,我们不难联想到五进制,将十进制转化为对应的五进制再乘2便可得到本题的答案
#include <iostream>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int ans[N], n;
signed main()
{
scanf("%lld", &n);
int i = 0;
if (n == 1)
{
cout << '0' << endl;
return 0;
}
n -= 1; //因为第一个数固定从0开始,所以要减去1
while (n)
{
int a = n % 5;
ans[i++] = a;
n /= 5;
}
for (int j = i - 1; j >= 0; j--)
cout << ans[j] * 2;
return 0;
}