Monday, August 15, 2011

Problem 92

prob92.cc Problem 92
Filename: prob92.cc
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

using namespace std;

typedef unsigned long long uint64_t;

uint64_t nextInChain(uint64_t num)
{
	char number[32];
	sprintf(number, "%llu", num);

	uint64_t next_in_chain = 0;
	for(int i=0; i<strlen(number); ++i)
		{
			const int digit = number[i]-48;
			next_in_chain += (digit*digit);
		}
	
	return next_in_chain;
}


int main()
{
	int num_ending_in_89 = 0;
	for(int i=1; i<10000000; ++i)
		{
			uint64_t working_num = i;
			while(working_num != 1 && working_num != 89)
				{
					working_num = nextInChain(working_num);
				}
			
			if(working_num == 89)
				{
					++num_ending_in_89;
				}
		}

	printf("answer: %d\n", num_ending_in_89);

	return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1

No comments:

Post a Comment