幸运数字——蓝桥杯

1.问题描述

哈沙德数是指在某个固定的进位制当中,可以被各位数字之和整除的正整数。例如 126126 是十进制下的一个哈沙德数,因为 (126)10mod(1+2+6)=0;126 也是八进制下的哈沙德数,因为 (126)10=(176)8,(126)10​mod(1+7+6)=0;同时 126 也是 16 进制下的哈沙德数,因为 (126)10​=(7e)16​ ,(126)10​mod(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)。
• 对于每个整数 ,它在二进制、八进制、十进制和十六进制下的各位数字之和都能整除 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值