https://www.devskill.com/CodingProblems/ViewProblem/385
খুবই সহজ একটি , প্রোবলেম - তোমাকে একটা সংখ্যা দেয়া থাকবে - তোমায় বলতে হবে - সংখ্যাটিকে
5^X আকারে , প্রকাশ করা যাবে কি না ?? যেখানে , X একটি অঋণাত্বক সংখ্যা ।
যেমন , 625 কে 5^4 আকারে , প্রকাশ করা যাবে । সুতরাং উত্তর হবে হ্যা , আর না হলে- না ।
আমরা আগে কোড দেখি , তারপর - বিভিন্ন অংশ নিয়ে আলোচনা করি , সেটাই বেটার হবে ।
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long llu;
bool pwr(llu n)
{
bool ans=false;
llu x=1,i;
for(i=0;;i++)
{
x=x*5;
if(x>n)
{
break;
}
else if(x==n)
{
ans=true;
break;
}
}
if(n==1)
{
ans=true;
}
return ans;
}
int main()
{
llu N;
int T;
cin>>T;
while(T--)
{
cin>>N;
if(pwr(N))
{
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}
আমরা , একটি bool pwr ফাংশন ইউস করেছি , যেটা - বলে দিবে , আমাদের উত্তর হ্যা হবে নাকি , না হবে ??
for(i=0;;i++)
{
x=x*5;
if(x>n)
{
break;
}
else if(x==n)
{
ans=true;
break;
}
}
এই লুপটি , এক এক করে - 5^1=5 , 5^2=25 , 5^3=125, 5^4=625 এভাবে , জেনারেট করতে থাকবে ,
যদি , আমদের দেয়া মান এর সমান হয়ে যায় - তখন
else if(x==n)
{
ans=true;
break;
}
আমাদের , ans=true করে দিয়ে - লুপ টা ব্রেইক করে দেয় , আর যদি - আমাদের দেয়া মান এর থেকে ,এই লুপ এর ভেতরে যে মান জেনারেট হয় - তার মান বেশী হয় ,তাহলেও -
if(x>n)
{
break;
}
if statement ইউস করে - লুপ কে ব্রেইক করে দেয় । আশা করি , কোড'টি - কোডব্লক্সে, রান করালে
আরো ক্লিয়ার হবে । আর হ্যা, 1 কে কিন্তু, 5^0 হিসেবে - প্রকাশ করা যায় । তাই সেটা , আলাদা করে
লিখে দিয়েছি ।
খুবই সহজ একটি , প্রোবলেম - তোমাকে একটা সংখ্যা দেয়া থাকবে - তোমায় বলতে হবে - সংখ্যাটিকে
5^X আকারে , প্রকাশ করা যাবে কি না ?? যেখানে , X একটি অঋণাত্বক সংখ্যা ।
যেমন , 625 কে 5^4 আকারে , প্রকাশ করা যাবে । সুতরাং উত্তর হবে হ্যা , আর না হলে- না ।
আমরা আগে কোড দেখি , তারপর - বিভিন্ন অংশ নিয়ে আলোচনা করি , সেটাই বেটার হবে ।
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long llu;
bool pwr(llu n)
{
bool ans=false;
llu x=1,i;
for(i=0;;i++)
{
x=x*5;
if(x>n)
{
break;
}
else if(x==n)
{
ans=true;
break;
}
}
if(n==1)
{
ans=true;
}
return ans;
}
int main()
{
llu N;
int T;
cin>>T;
while(T--)
{
cin>>N;
if(pwr(N))
{
cout<<"YES"<<endl;
}
else{
cout<<"NO"<<endl;
}
}
return 0;
}
আমরা , একটি bool pwr ফাংশন ইউস করেছি , যেটা - বলে দিবে , আমাদের উত্তর হ্যা হবে নাকি , না হবে ??
for(i=0;;i++)
{
x=x*5;
if(x>n)
{
break;
}
else if(x==n)
{
ans=true;
break;
}
}
এই লুপটি , এক এক করে - 5^1=5 , 5^2=25 , 5^3=125, 5^4=625 এভাবে , জেনারেট করতে থাকবে ,
যদি , আমদের দেয়া মান এর সমান হয়ে যায় - তখন
else if(x==n)
{
ans=true;
break;
}
আমাদের , ans=true করে দিয়ে - লুপ টা ব্রেইক করে দেয় , আর যদি - আমাদের দেয়া মান এর থেকে ,এই লুপ এর ভেতরে যে মান জেনারেট হয় - তার মান বেশী হয় ,তাহলেও -
if(x>n)
{
break;
}
if statement ইউস করে - লুপ কে ব্রেইক করে দেয় । আশা করি , কোড'টি - কোডব্লক্সে, রান করালে
আরো ক্লিয়ার হবে । আর হ্যা, 1 কে কিন্তু, 5^0 হিসেবে - প্রকাশ করা যায় । তাই সেটা , আলাদা করে
লিখে দিয়েছি ।
No comments:
Post a Comment