现在的位置: 首页 > 综合 > 正文

460B. Little Dima and Equation

2018年01月11日 ⁄ 综合 ⁄ 共 569字 ⁄ 字号 评论关闭

题目有点绕。。s[x] 范围[1.81]

因为最大的x  为 999999999

然后x 和 每位相加的和 等于s[x] 直接枚举就可以了

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
typedef __int64 ll;
#define MAX 1000000000
int n[1000];
ll Pow(int i,int a){
    ll ret = 1;
    for(int x = 1;x <= a;x++){
        ret *= i;
    }
    return ret;
}
int main(){
    ll a,b,c;
    scanf("%I64d%I64d%I64d",&a,&b,&c);
    int cnt = 0;
    memset(n,0,sizeof(n));
    for(int i = 1;i <= 81;i++){
            ll x = Pow(i,a);
            x = b * x + c;
            if(x > 0 && x < MAX){
                ll s = x;
                int ss= 0;
                while(s){
                    ss += s% 10;
                    s /= 10;
                }
                if(ss == i) n[cnt++] = x;
            }
    }
    if(cnt == 0) printf("0\n");
    else{
        printf("%d\n",cnt);
        for(int i =0;i < cnt - 1;i++){
            printf("%d ",n[i]);
        }
        printf("%d\n",n[cnt-1]);
    }
    return 0;
}

抱歉!评论已关闭.