Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
33
Task/Happy-numbers/C/happy-numbers-1.c
Normal file
33
Task/Happy-numbers/C/happy-numbers-1.c
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#define CACHE 256
|
||||
enum { h_unknown = 0, h_yes, h_no };
|
||||
unsigned char buf[CACHE] = {0, h_yes, 0};
|
||||
|
||||
int happy(int n)
|
||||
{
|
||||
int sum = 0, x, nn;
|
||||
if (n < CACHE) {
|
||||
if (buf[n]) return 2 - buf[n];
|
||||
buf[n] = h_no;
|
||||
}
|
||||
|
||||
for (nn = n; nn; nn /= 10) x = nn % 10, sum += x * x;
|
||||
|
||||
x = happy(sum);
|
||||
if (n < CACHE) buf[n] = 2 - x;
|
||||
return x;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i, cnt = 8;
|
||||
for (i = 1; cnt || !printf("\n"); i++)
|
||||
if (happy(i)) --cnt, printf("%d ", i);
|
||||
|
||||
printf("The %dth happy number: ", cnt = 1000000);
|
||||
for (i = 1; cnt; i++)
|
||||
if (happy(i)) --cnt || printf("%d\n", i);
|
||||
|
||||
return 0;
|
||||
}
|
||||
31
Task/Happy-numbers/C/happy-numbers-2.c
Normal file
31
Task/Happy-numbers/C/happy-numbers-2.c
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int dsum(int n)
|
||||
{
|
||||
int sum, x;
|
||||
for (sum = 0; n; n /= 10) x = n % 10, sum += x * x;
|
||||
return sum;
|
||||
}
|
||||
|
||||
int happy(int n)
|
||||
{
|
||||
int nn;
|
||||
while (n > 999) n = dsum(n); /* 4 digit numbers can't cycle */
|
||||
nn = dsum(n);
|
||||
while (nn != n && nn != 1)
|
||||
n = dsum(n), nn = dsum(dsum(nn));
|
||||
return n == 1;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int i, cnt = 8;
|
||||
for (i = 1; cnt || !printf("\n"); i++)
|
||||
if (happy(i)) --cnt, printf("%d ", i);
|
||||
|
||||
printf("The %dth happy number: ", cnt = 1000000);
|
||||
for (i = 1; cnt; i++)
|
||||
if (happy(i)) --cnt || printf("%d\n", i);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue