http://www.lightoj.com/volume_showproblem.php?problem=1294
-1 -2 -3 +4 +5 +6 -7 -8 -9 +10 +11 +12
ধরো , ইনপুটে দেয়া আছে - n = 12 and m =3 - তাহলে, উপরের সিরিজ'টি হবে ।
ধারা'র নিয়মটি হলো - ১ থেকে ১২ অবদি সংখ্যা'র যোগফল -কিন্তু, m এর মানের উপর ডিপেন্ড করে
কিছু সংখ্যা এর মান হবে নেগেটিভ । লুপ খাটিয়ে ইজিলি করা যাবে , কিন্তু - Time Limit Exceeded
হবার সম্ভাবনা থাকবে । তাই , অন্যপথে - আমাদের হাটতে হবে
এখন, একটূ ভালোভাবে লক্ষ করলে একটা বিষয় ক্লিয়ার হবে ,খেয়াল করি - ধারাটি , একটু সুবিধামত লিখে ফেলি ------------------
-1 + 4 -2+5 -3+6 -7+10 -8+11 -9+12
m এর মান ৩ হবার কারণে - ৩টি সংখ্যা পরপর ৩ টি সংখ্যা নেগেটিভ ,হয়েছে - এটাকে উপরের নতুন
গোছানো ধারা অনুযায়ী লক্ষ করলে , দেখতে পাচ্ছি মোট n/2 = 6 ( এখানে যেহেতু, n=12 ) টি অংশ পেয়েছি , যে অংশের প্রত্যেকটির মান m এর মানের সমান ( এখানে , m==3) । যেহেতু , n/2 সংখ্যক পার্ট যাদের মান m, এখন বুঝতেই পারছো , ধারাটির যোগফল হবে m*(n/2) == 18 | |
চলো , কোড দেখি
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int T;
cin>>T;
long long int n,m;
for(int i=1;i<=T;i++)
{
cin>>n>>m;
printf("Case %d: %lld\n",i,(n*m)/2);
}
return 0;
}
-1 -2 -3 +4 +5 +6 -7 -8 -9 +10 +11 +12
ধরো , ইনপুটে দেয়া আছে - n = 12 and m =3 - তাহলে, উপরের সিরিজ'টি হবে ।
ধারা'র নিয়মটি হলো - ১ থেকে ১২ অবদি সংখ্যা'র যোগফল -কিন্তু, m এর মানের উপর ডিপেন্ড করে
কিছু সংখ্যা এর মান হবে নেগেটিভ । লুপ খাটিয়ে ইজিলি করা যাবে , কিন্তু - Time Limit Exceeded
হবার সম্ভাবনা থাকবে । তাই , অন্যপথে - আমাদের হাটতে হবে
এখন, একটূ ভালোভাবে লক্ষ করলে একটা বিষয় ক্লিয়ার হবে ,খেয়াল করি - ধারাটি , একটু সুবিধামত লিখে ফেলি ------------------
-1 + 4 -2+5 -3+6 -7+10 -8+11 -9+12
m এর মান ৩ হবার কারণে - ৩টি সংখ্যা পরপর ৩ টি সংখ্যা নেগেটিভ ,হয়েছে - এটাকে উপরের নতুন
গোছানো ধারা অনুযায়ী লক্ষ করলে , দেখতে পাচ্ছি মোট n/2 = 6 ( এখানে যেহেতু, n=12 ) টি অংশ পেয়েছি , যে অংশের প্রত্যেকটির মান m এর মানের সমান ( এখানে , m==3) । যেহেতু , n/2 সংখ্যক পার্ট যাদের মান m, এখন বুঝতেই পারছো , ধারাটির যোগফল হবে m*(n/2) == 18 | |
চলো , কোড দেখি
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int T;
cin>>T;
long long int n,m;
for(int i=1;i<=T;i++)
{
cin>>n>>m;
printf("Case %d: %lld\n",i,(n*m)/2);
}
return 0;
}
very nicely explained, thank you very much.
ReplyDelete