Sunday, August 27, 2017

10070 - Leap Year or Not Leap Year and ... Uva Problem Solution & Logic


https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1011


একটা মজার প্রোবলেম , কিন্তু --- তোমায় প্রোবলেম ডেস্ক্রিপশন খুব ভালো করে পড়তে হবে । আসলে ,
কি বলেছে ??? তোমায় একটা সাল দেয়া থাকবে , এখন সমস্যা হলো  শাল অনেক বড়ো হতে পারে ,যা
আমাদের স্ট্রিং আকারে নিতে হবে । ।

তারপর দেখতে হবে ,কিছু মোস্ট গুরুত্বপূর্ণ  বিষয়       ------------------------



 যদি,  ৪ দ্বারা বিভাজ্য হয় ও ১০০ দ্বারা বিভাজ্য না হয় অথবা ৪০০ দ্বারা বিভাজ্য হয় , তাহলে সাল'টি 
লিপ ইয়ার ।। 
যদি , ১৫ দ্বারা বিভাজ্য হয় তাহলে , লিপ ইয়ার হওয়া সত্তেও এটা  huluculu festival year ও হবে ।

এখন যদি সাল'টি লিপ ইয়ারের শর্ত ইতিমধ্যে পূরণ করে থাকে , তাহলে ৫৫ দ্বারা বিভাজ্য হলে সাল'টি
 bulukulu festival year ও হবে ।
আর যদি , সালটি কোনো ক্যাটাগরিতেই না পরে , তাহলে an ordinary year. বলে গণ্য হবে । 


এখন সমস্যা হইলো -- স্ট্রিং আকারে যেহেতু নিচ্ছি , সুতরাং এটা ৪/১০০/৫৫/১৫ দ্বারা বিভাজ্য কি না ?? 
এটা কিভাবে বুঝবো ??? ঠিক স্ট্রিংকে ভাগ কিভাবে করতে হয় ? এরকম একটা প্রোবলেম এর আগেও সলভ করেছি , সেটার লিঙ্ক দিলাম - চাইলে দেখে পরিষ্কার হতে পারো 

একবার না বুঝিলে দেখো শতবার , যদি না বুঝে থাকো , তাহলে বারবার বোঝার ট্রাই করো 

চলো , কোড দেখি এবার ,


#include<bits/stdc++.h>

using namespace std;

int main ()
{
    long Flag, Mod4, Mod100, Mod400, Mod15, Mod55, I, Len, leap;
    char A[1000000];
    int print = 0;

    while (cin >> A){

        if ( print != 0 )
            printf("\n");
        print = 1;

        leap = Flag = Mod4 = Mod100 = Mod400 = Mod15 = Mod55 = 0;

        Len = strlen (A);

        for (I=0; I< Len; I++) {

            Mod4 = ((Mod4 * 10) + (A[I]-'0')) % 4;
            Mod100 = ((Mod100 * 10) + (A[I]-'0')) % 100;
            Mod400 = ((Mod400 * 10) + (A[I]-'0')) % 400;
            Mod15 = ((Mod15 * 10) + (A[I]-'0')) % 15;
            Mod55 = ((Mod55 * 10) + (A[I]-'0')) % 55;
        }

        if ((Mod4==0 && Mod100!=0) || Mod400==0){
            printf("This is leap year.\n");
            leap = 1;
            Flag = 1;
        }

        if (Mod15==0){
            printf("This is huluculu festival year.\n");
            Flag = 1;
        }

        if (leap==1 && Mod55==0)
            printf("This is bulukulu festival year.\n");

        if (Flag==0)
            printf("This is an ordinary year.\n");
    }
    return 0;
}

No comments:

Post a Comment