返回题解分享
讨论 / 题解分享/ 帖子详情

幸运数字(结果填空) - 题解

c++无脑暴力

#include<bits/stdc++.h>
using namespace std;

int check(int i)//纯暴力,按照十进制方法照猫画虎,然后判断是否都满足 
{
	int cnt = 0;//计数器,返回时用来判断i是否满足要求 
	int sum = 0;//每一位和 
	int j = i;//每个进制判断后,给j不断恢复传入的i的值 
	
    //十进制 
	while(j > 0)//获取每一位的和 
	{
		sum += j % 10;
		j /= 10;
	}
	
	if(i % sum == 0){//判断是否可以整除 
		cnt ++;
	}	   
	
	//二进制 
	j = i;	
	sum = 0;
	while(j > 0)
	{
		sum += j % 2;
		j /= 2;
	}
	
	if(i % sum == 0){
		cnt ++;
	}
	
	//八进制 
	j = i; 
	sum = 0;
	while(j > 0)
	{
		sum += j % 8;
		j /= 8;
	}
	
	if(i % sum == 0){
		cnt ++;
	}

    
	//十六进制 
	j = i; 
    sum = 0;
	while(j > 0)
	{
		sum += j % 16;
		j /= 16;
	}
	
	if(i % sum == 0){
		cnt ++;
	}
	
	if(cnt == 4)return 1;//四种情况都符合,说明是需要的i 
	else return 0;
}

int main()
{
	int i = 0, cnt = 0;//i是当前的数,cnt记录有几个需要的数 
	
	while(cnt < 2023)//找到第2023个 
	{
		++ i;//i递增 
		cnt += check(i);
	}
	
	cout << i;//输出结果 
	 
	return 0;
}
0 回复 0 转发 0 喜欢 8 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!