Project Euler 57, ошибка времени выполнения
В настоящее время я работаю в Probelm 57 в Project Euler:
https://projecteuler.net/problem=57
Моя проблема в том, что, хотя я считаю, что даны правильные ответы, подсчет цифр кажется неправильным. Я не уверен, что ошибка может быть. Я добавил комментарии, чтобы сделать мой код более понятным.
Мой код правильно распознает дробь 1393/985, но примерно после i=30 он, похоже, сходит с провода (возможно, где-то переполнен?).
Заранее спасибо!
PS, видимо, ответ 153, а я получаю 253
#include <stdio.h>
long unsigned int fraction(long unsigned int *x, long unsigned int *y);
int main(){
int i, j, count=0; //initialise loop counters
for (i=0; i<1000; i++){ //number of iterations
long unsigned int x=1, y=2; //this is the starting position values
for (j=1; j<i; j++){ //iterate through "fraction" function i-1 times
fraction(&x, &y);
}
x+=y; //add the extra "1" onto the final answer
long unsigned int xt=0, t1=x, t2=y, yt=0; //xt and yt are digit counters
while(t1!=0){ //count the number of digits in the numerator
t1 /= 10;
xt++;
}
while(t2!=0){ //count the number of digits in the denominator
t2 /= 10;
yt++;
}
if (xt>yt){ //compare length of numerator and denominator
count++;
}
}
printf("Count is %i\n",count);
}
long unsigned int fraction(long unsigned int *x, long unsigned int *y){ //function to derive a fraction based on the number of iterations
long unsigned int temp;
*x+=2*(*y);
temp=*x;
*x=*y;
*y=temp; //modify pointers to reflect new values
}