https://www.devskill.com/CodingProblems/ViewProblem/180
নাম্বার থিওরি'র খুবই মজার একটা সমস্যা ---- তোমায় একটা সংখ্যা দেয়া থাকবে , সেই সংখ্যার ভেতরে একটা জায়গায় একটা A থাকবে , সেই A এর জায়গায় -ক্ষুদ্রতম কোন ডিজিট বসাইলে ? পুরো সংখ্যাটি ৮ দ্বরা বিভাজ্য হবে ??? আর যদি , কোনোভাবেই ৮ দ্বারা বিভাজ্য না হয় , তাহলে উত্তর প্রিন্ট করতে হবে "NO"
তো এখন , তোমায় - একটা জিনিস জানতে হবে যে , একটি সংখ্যা ৮ দ্বারা তখনই বিভাজ্য হবে , যখন - শেষ এর তিন ডিজিট মিলে , যে সংখ্যা হবে , সেটা যদি ৮ দ্বারা বিভাজ্য হয় । প্রশ্নে বলাই আছে ,
' A ' will be between 1 to ( n - 4 ) index ,সুতরাং আমরা শেষ এর ৩ ডিজিট নিয়ে যখন , একটা
সংখ্যা বানাবো - তখন , কোনো ঝামেলাই হবে না । তাহলে , আমরা যখনই শেষের ৩ ডিজিট দিয়ে সংখ্যা বানিয়ে --- টেস্ট করে দেখবো যে , ৮ দ্বারা বিভাজ্য - তখন , সংখ্যাটি ৮ দ্বারা বিভাজ্য - অরথাত , A এর জায়গায় ০ বসালেই হয়ে যাচ্ছে , আর যদি A একদম প্রথমে থাকে , তাহলে তো ০ বসানো যাবে না , তখন ১ বসিয়ে দিলেই হয়ে যাবে । এখানে , A এর যায়গায় যে কোনো মান বসালেই কিন্তু হবে , কিন্তু আমাদের বলাই আছে , সবচেয়ে ছোট অংক'টি বসাতে হবে , সেইজন্য ০ ও ১ চুজ করছি আমরা । চলো , কোড দেখে আসি এবার ----
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
int x;
scanf("%d",&x);
while(x--)
{
cin>>s;
int l=s.length();
int n=s[l-3]*100+s[l-2]*10+s[l-1];
if(n%8==0)
{
printf("YES\n");
if(s[0]=='A')printf("1\n");
else printf("0\n");
}
else printf("NO\n");
}
return 0;
}
নাম্বার থিওরি'র খুবই মজার একটা সমস্যা ---- তোমায় একটা সংখ্যা দেয়া থাকবে , সেই সংখ্যার ভেতরে একটা জায়গায় একটা A থাকবে , সেই A এর জায়গায় -ক্ষুদ্রতম কোন ডিজিট বসাইলে ? পুরো সংখ্যাটি ৮ দ্বরা বিভাজ্য হবে ??? আর যদি , কোনোভাবেই ৮ দ্বারা বিভাজ্য না হয় , তাহলে উত্তর প্রিন্ট করতে হবে "NO"
তো এখন , তোমায় - একটা জিনিস জানতে হবে যে , একটি সংখ্যা ৮ দ্বারা তখনই বিভাজ্য হবে , যখন - শেষ এর তিন ডিজিট মিলে , যে সংখ্যা হবে , সেটা যদি ৮ দ্বারা বিভাজ্য হয় । প্রশ্নে বলাই আছে ,
' A ' will be between 1 to ( n - 4 ) index ,সুতরাং আমরা শেষ এর ৩ ডিজিট নিয়ে যখন , একটা
সংখ্যা বানাবো - তখন , কোনো ঝামেলাই হবে না । তাহলে , আমরা যখনই শেষের ৩ ডিজিট দিয়ে সংখ্যা বানিয়ে --- টেস্ট করে দেখবো যে , ৮ দ্বারা বিভাজ্য - তখন , সংখ্যাটি ৮ দ্বারা বিভাজ্য - অরথাত , A এর জায়গায় ০ বসালেই হয়ে যাচ্ছে , আর যদি A একদম প্রথমে থাকে , তাহলে তো ০ বসানো যাবে না , তখন ১ বসিয়ে দিলেই হয়ে যাবে । এখানে , A এর যায়গায় যে কোনো মান বসালেই কিন্তু হবে , কিন্তু আমাদের বলাই আছে , সবচেয়ে ছোট অংক'টি বসাতে হবে , সেইজন্য ০ ও ১ চুজ করছি আমরা । চলো , কোড দেখে আসি এবার ----
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
int x;
scanf("%d",&x);
while(x--)
{
cin>>s;
int l=s.length();
int n=s[l-3]*100+s[l-2]*10+s[l-1];
if(n%8==0)
{
printf("YES\n");
if(s[0]=='A')printf("1\n");
else printf("0\n");
}
else printf("NO\n");
}
return 0;
}
No comments:
Post a Comment