Project Euler 63

5桁の数 16807 = 7^5は自然数を5乗した数である. 同様に9桁の数 134217728 = 8^9も自然数を9乗した数である.
自然数をn乗して得られるn桁の正整数は何個あるか?

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%2063
#pragma comment(lib, "mpir.lib")
#include <iostream>
#include <mpir.h>
using namespace std;

// m^n を mpz_t型で返す。
void mpowern(mpz_t *ans, int m, int n){
	mpz_set_ui(*ans, 1);

	for(int i=1 ; i<=n ; i++){
		mpz_mul_ui(*ans, *ans, m);
	}
}

// mpz_t型の桁数を返す。
int mpz_digit(mpz_t* num){
	mpz_t a;
	mpz_init_set(a, *num);
	int count = 0;

	while(mpz_cmp_si(a,0)!=0){
		// a = a/10;
		mpz_div_ui(a, a, 10);
		count++;
	}
	return count;
}

int main(){
	mpz_t a;
	mpz_init(a);

	int n, count=0;
	for(int i=1 ; i<100 ; i++){
		for(int j=1 ; j<100 ; j++){
			mpowern(&a, i, j);
			n = mpz_digit(&a);
			if(n == j) count++;
			
		}
	}
	cout << count << endl;
}

なぜこれが63番という随分後半に配置されているのかわからないほどあっさり。