1.问题描述
哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如 126126 是十进制下的一个哈沙德数,因为 (126)10mod(1+2+6)=0;126 也是八进制下的哈沙德数,因为 (126)10=(176)8,(126)10mod(1+7+6)=0;同时 126 也是 16 进制下的哈沙德数,因为 (126)10=(7e)16 ,(126)10mod(7+e)=0。小蓝认为,如果一个整数在二进制、八进制、十进制、十六进制下均为哈沙德数,那么这个数字就是幸运数字,第 1 至第 10 个幸运数字的十进制表示为:1,2,4,6,8,40,48,72,120,126…。现在他想知道第 2023 个幸运数字是多少?你只需要告诉小蓝这个整数的十进制表示即可。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
2.代码
#include<iostream>
using namespace std;
int a(int n,int b)//十进制下的整数n转化为b进制的数求和
{int sum=0;while(n>0){sum+=n%b;n=n/b;}return sum;
}
int main()
{int n=1;int c;for(int i=1,n=1;n<=2023;i++){if(i%a(i,2)==0&&i%a(i,8)==0&&i%a(i,10)==0&&i%a(i,16)==0){n++;c=i;}}cout<<c<<endl;}
3.代码解析
这段代码的主要目的是找到一个特定的整数 ,满足以下条件:
• 是第 个满足条件的数(其中 从 1 开始递增,直到 2023)。
• 对于每个整数 ,它在二进制、八进制、十进制和十六进制下的各位数字之和都能整除 。