Created
March 23, 2015 03:58
-
-
Save pbassut/d7f483399d3a9df1f394 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
bool dividerBy(char *number, int divider); | |
int main(){ | |
int flag = 0; | |
char year[1000]; | |
bool leap, huluculu, bulukulu; | |
while(scanf("%s", year)){ | |
if (year[0] == 'E' && year[1] == 'O' && year[2] == 'F') return 0; | |
if (flag++ > 0) | |
printf("\n"); | |
leap = false; huluculu = false; bulukulu = false; | |
/*if (dividerBy(year, 15)){ | |
printf("divider\n"); | |
}else{ | |
printf("not divider\n"); | |
}*/ | |
if (dividerBy(year, 400) || (dividerBy(year, 4) && !dividerBy(year, 100))){ | |
leap = true; | |
printf("This is leap year.\n"); | |
} | |
if (dividerBy(year, 15)){ | |
huluculu = true; | |
printf("This is huluculu festival year.\n"); | |
} | |
else if (dividerBy(year, 55) && leap){ | |
bulukulu = true; | |
printf("This is bulukulu festival year.\n"); | |
} | |
else if (!leap && !huluculu && !bulukulu){ | |
printf("This is an ordinary year.\n"); | |
} | |
} | |
return 0; | |
} | |
bool dividerBy(char *number, int divider){ | |
int i = 0, digit, rest = 0, result = 0; | |
while(number[i] != '\0'){ | |
digit = atoi(&number[i++]); //converte o char na posição i para int | |
rest = rest * 10 + digit; | |
while (rest < divider && rest != 0 && number[i] != '\0'){ | |
digit = number[i++] - '0'; | |
rest = rest * 10 + digit; | |
} | |
if (rest >= divider){ | |
result = result * 10 + rest / divider; | |
rest = rest % divider; | |
} | |
} | |
//printf("rest = %d\n", rest); | |
//printf("result = %d\n", result); | |
return rest == 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment