Filename: prob63.cc
#include <stdio.h>
#include <math.h>
#include <list>
#include <string.h>
using namespace std;
int digits(double num)
{
char decimal[512];
sprintf(decimal, "%lf", num);
if(strcmp(decimal, "inf") == 0) return -1;
char *pch = strtok (decimal,".");
return strlen(decimal);
}
//long long power(int base, int exponent)
//{
// long long result = 1;
// for(int i=0; i<exponent; ++i)
// {
// const long long prev_result = result;
// result *= base;
// if(prev_result > result && base != 0) return -1;
// }
//
// return result;
//}
int main()
{
list<long long>l;
for(int n=0; digits(pow(2,n)) != -1; ++n)
{
// printf("pow(2,%d): %lf\n", n, pow(2,n));
// printf("digits(pow(%d,%d)) : %d n : %d pow(%d,%d): %lf\n", 0, n, digits(pow(0,n)), n, 0, n, pow(0,n));
for(int x=0; x<10; ++x)
{
// printf("digits(pow(%d,%d)) : %d n : %d pow(%d,%d): %lf\n", x, n, digits(pow(x,n)), n, x, n, pow(x,n));
if(digits(pow(x,n)) == n)
{
l.push_back(pow(x,n));
printf("x: %d, n: %d\n\tdigits(pow(x,n)): %d\n\tpow(x,n): %lf\n", x, n, digits(pow(x,n)), pow(x,n));
}
}
}
l.sort();
l.unique();
printf("answer: %d\n", l.size());
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1
No comments:
Post a Comment