xを決め打ちする
#include <iostream>
using namespace std;
long long a, n, m;
bool check(int x){
long long y = 0;
long long v = x;
while(v){
y += v%10;
v /= 10;
}
long long w = 1;
for ( int i = 0; i < n; i++){
w *= (y + a);
}
return x == w;
}
int main() {
cin >> a >> n >> m;
int cnt = 0;
for ( int x = 1; x <= m; x++ ){
if ( check(x) ) cnt++;
}
cout << cnt << endl;
}
yを決め打ちする
#include <iostream>
using namespace std;
long long a, n, m;
long long val(long long x){
long long sum = 0;
while(x){
sum += x%10;
x /= 10;
}
return sum;
}
int solve(){
int cnt = 0;
for ( int y = 1; y <= 72; y++ ){
long long x = 1;
for ( int t = 1; t <= n; t++ ){
x *= (y+a);
}
if (x <= m && val(x) == y) cnt++;
}
return cnt;
}
int main() {
cin >> a >> n >> m;
cout << solve() << endl;
}