Tuesday 8 May 2012

UVa 10070 Leap Year or Not Leap Year and … Solution

#include<stdio.h>
#include<string.h>
int main()
{
long long a,b,c,d,e,i,l,leap,hulu,bulu,nl=0;
char s[100000];
while(gets(s))
{
a=0;
b=0;
c=0;
d=0;
e=0;
leap=0;
hulu=0;
bulu=0;
l=strlen(s);
for(i=0;i<l;i++)
    {
    a=a*10+(s[i]-'0');
    a=a%4;
    }
if(a==0)
    {
    for(i=0;i<l;i++)
        {
        b=b*10+(s[i]-'0');
        b=b%100;
        }
    if(b==0)
        {
        for(i=0;i<l;i++)
            {
            c=c*10+(s[i]-'0');
            c=c%400;
            }
        if(c==0)
        leap=1;
        }
    else
    leap=1;
    }
for(i=0;i<l;i++)
    {
    d=d*10+(s[i]-'0');
    d=d%15;
    }
if(d==0)
hulu=1;
if(leap==1)
    {
    for(i=0;i<l;i++)
        {
        e=e*10+(s[i]-'0');
        e=e%55;
        }
    if(e==0)
    bulu=1;
    }
if(nl!=0)
printf("\n");
if(leap==1)
printf("This is leap year.\n");
if(hulu==1)
printf("This is huluculu festival year.\n");
if(bulu==1)
printf("This is bulukulu festival year.\n");
if(leap==0 && hulu==0 && bulu==0)
printf("This is an ordinary year.\n");
nl++;
}
return 0;
}

2 comments:

  1. # checking divisibility
    def divisibleBy(year,number):
    remainder_after_per_division=0
    for i in range(len(year)):
    keep=remainder_after_per_division*10 + int(year[i])
    remainder_after_per_division=keep % number
    return True if remainder_after_per_division==0 else False

    isfirstInput = True
    while True :
    try :
    year=input()
    if not isfirstInput :
    print()
    isfirstInput=False

    leapyear=divisibleBy(year,400) or divisibleBy(year,4) and not divisibleBy(year,100)
    hulukuluyear= divisibleBy(year,15)
    bulukuluyear= leapyear and divisibleBy(year,55)

    if leapyear or hulukuluyear or bulukuluyear :
    if leapyear:
    print("This is leap year.")
    if hulukuluyear :
    print("This is huluculu festival year.")
    if bulukuluyear:
    print("This is bulukulu festival year.")
    else :
    print("This is an ordinary year.")
    except EOFError :
    break

    ReplyDelete