hdu 1197 Specialized Four-Digit Numbers (水题)

思路:进制转换原理,对进制取模然后除以进制,直至原数为0,计算时存下总和。判断输出即可。


代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

#define N 100010
#define MAX 1000010

int p[] = {2992,2993,2994,2995,2996,2997,2998,2999,4470,4471,4472,4473,4474,4475,4970,4971
,4972,4973,4974,4975,5460,5461,5462,5463,5464,5465,5466,5467,5468,5469,5960,5961
,5962,5963,6456,6457,6458,6459,7440,7441,7442,7443,7444,7445,7446,7447,7448,7449
,7940,7941,7942,7943,8436,8437,8438,8439,9424,9425,9426,9427,9428,9429,9924,9925
,9926,9927,9928,9929};

int f(int x,int n){
    int cnt = 0;
    while(x){
        cnt += x%n;
        x /= n;
    }
    return cnt;
}


void init(){
    //printf("{");
    int cnt = 0;
    for(int i = 1000; i < 10000; ++i){
        int a = f(i,10), b = f(i,16), c= f(i,12);
        if(a == b && b == c){
            printf("%d\n",i);//cnt++;
        }
    }
    //printf("}%d\n",cnt);
}



int main() {
    int x;
    init();
    /*for(int i = 0; i < 68; ++i){
        printf("%d\n",p[i]);
    }
    while(~scanf("%d",&x),x) {
        printf("%d\n",f(x,2));
    }*/
    return 0;
}


你可能感兴趣的:(hdu 1197 Specialized Four-Digit Numbers (水题))