http://algolist.manual.ru/olimp/rec
Задачи 2 и 3.
Компилировать командой
gcc -Wall -Wextra -ansi -pedantic -lm happy.c -o happy
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
char n[] = "00";
void next (char *n)
{
++(*n);
while (*n > '9') {
*n = '0';
++n;
if (*n != '\0')
++(*n);
else
break;
}
}
int happy (char n[], size_t l)
{
size_t i;
int s = 0;
for (i = 0; i < l/2; ++i)
s += n[i];
for (i = l/2; i < l; ++i)
s -= n[i];
return s;
}
int main ()
{
int i;
size_t l;
size_t count = 0;;
l = strlen(n);
for (i = 0; i < pow(10, l); ++i) {
printf("%s -> ", n);
if (0 == happy(n, l)) {
printf("happy :-)\n");
++count;
}
else
printf("usual :-(\n");
next(n);
}
printf ("Total happy: %lu\n", (unsigned long)count);
return EXIT_SUCCESS;
}