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