A - Specialized Four-Digit Numbers

查找并列出十进制表示法中的所有四位数数字,这些数字的属性是,其四位数之和等于以十六进制(基数16)表示的数字之和,当以四位数(基数12)表示时,也等于其数字之和。
例如,数字2991的和为(十进制)数字2+9+9+1=21。由于2991=11728+8144+9*12+3,其十进表示为1893年。12,这些数字的总和也高达21。但在十六进制中,2991是BAF16,11+10+15=36,所以2991应该被你的程序拒绝。
然而,下一个数字(2992)的数字在所有三种表示中之和为2(包括BB0)。16),所以2992应该在列出的输出上。(我们不想要小于四位数的十进制数-不包括前导零-这样2992才是第一个正确答案。)
输入
这个问题没有输入。
输出量
您的输出是2992和所有更大的四位数数字,满足要求(严格增加的顺序),每一行没有前导或尾随空格,以一个新的行字符结束。输出中将没有空行。输出的前几行如下所示。

样本输入
There is no input for this problem
样本输出
2992
2993
2994
2995
2996
2997
2998
2999
分析:就是看101216进制每个数字之和是不是一样

#include <bits/stdc++.h>

using namespace std;
 
#define LL long long
#define INF 0x3f3f3f3f
 
int f(int x,int y)
{
    
    
    int sum=0;
    while(x)
    {
    
    
        sum+=x%y;
        x/=y ;
    }
    return sum;
}
 
int main()
{
    
    
    for(int i=1000; i<10000; i++)
    {
    
    
        int sum=f(i,12);
        if(f(i,10)==sum&&sum==f(i,16))
            printf("%d\n",i);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_43738331/article/details/112788250
今日推荐