Codeforces Round #262 (Div. 2)B. Little Dima and Equation

来源:互联网 发布:淘宝店铺图片轮播尺寸 编辑:程序博客网 时间:2024/05/22 22:57

通过枚举x可能各位数字之和, 即0(0), 81(999999999) 对于 x = b·s(x)a + c, 逆向求出x, 再判断x各位数字和是否等于所枚举的值

#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <cmath>#include <vector>#include <list>#include <deque>#include <queue>#include <cctype>#include <map>#include <set>#include <bitset>#include <functional>#include <numeric>#include <utility>#include <sstream>#include <iomanip>#include <cstdlib>#include <ctime>#include <cassert>#include <limits>using namespace std;#define CLR(A) memset(A,0,sizeof(A))#define pb(x) push_back(x)#define mp(x,y) make_pair((x),(y))#define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i))#define rer(i,l,u) for(int (i)=(int)(l);(i)<=(int)(u);++(i))#define reu(i,l,u) for(int (i)=(int)(l);(i)<(int)(u);++(i))typedef long long int64;int gcd(const int64 &a, const int64 &b) {return b == 0 ? a : gcd(b, a % b);}int64 int64pow(int64 a, int64 b){if(b == 0) return 1;int64 t = int64pow(a, b / 2);if(b % 2) return t * t * a;return t * t;}const int inf = 1e9;const double eps = 1e-8;int64 a, b, c;vector<int64> v;void init(){}void solve(){    v.clear();    for (int64 i = 0; i <= 81; ++i) {        int64 x = 1;        x = int64pow(i, a);        x *= b; x += c;        int64 sum = 0, tmp = x;        while (tmp) {            sum += tmp % 10;            tmp /= 10;        }        if (x > 0 && x < 1000000000 && sum == i) v.pb(x);    }}void print(){    cout << v.size() << endl;    rep(i, (int)v.size()) cout << v[i] << " ";    cout << endl;}int main(){    while (cin >> a >> b >> c) {        solve();        print();    }    return 0;}


0 0
原创粉丝点击