http://www.lightoj.com/volume_showproblem.php?problem=1225
খুবই সহজ একটা প্রোবলেম , একটা সংখ্যা দেয়া থাকবে - তোমায় বলতে হবে , সেটা Palindromic কি না ?? Palindromic মানে , যে সংখ্যাকে উলটা করলেও , একই রকম দেখায় - এর মানে , তার মানের কোনো চেঞ্জ হয় না । যেমন , ১২২১ । এটাকে ,উলটা করে যদি লেখো , মানে শেষ থেকে যদি লেখো , তাহলেও ১২২১ ই হবে , কিন্তু - যদি সংখ্যাটি যদি - ১২৩৪ হতো , তাহলে উলটা করে লিখলে হতো ,৪৩২১ এর মানে - সংখ্যাটি চেঞ্জ হয়ে যেতো । এখন দেখবো,একটি - সংখ্যাকে কিভাবে উলটো করা যায়?নীচে দেখো
ধরো , ১৮৯ কে রিভার্স করবো , তাহলে একটি variable n ধরে নেই যার মান , প্রথমে ০ ।
১৮৯ কে যদি ১০ দিয়ে ভাগ দিয়ে ভাগশেষ বের করতে যাই , তাহলে হবে ৯ -এখন ১৮৯ কে ১০ দিয়ে ভাগ করে ফেলি , পাবো ১৮ এখন এই প্রক্রিয়াই আবার খাটাই। আর , ভাগশেষ ৯ কে আগের n এর মান কে ১০ দিয়ে গুণ দিয়ে তার সাথে যোগ দেই । একটা variable n
এর ভিতরে রাখি , n = n*১০ + ৯ == ০*১০+ ৯ == ৯।
এখন ১৮ কে যদি ১০ দিয়ে ভাগ দিয়ে ভাগশেষ বের করতে যাই , তাহলে হবে ৮ -এখন ১৮ কে ১০ দিয়ে
ভাগ করে ফেলি , পাবো ১ এখন এই প্রক্রিয়াই আবার খাটাই। আর , ভাগশেষ ৮ কে আগের n এর মান কে ১০ দিয়ে গুণ দিয়ে তার সাথে যোগ দেই । একটা variable nএর ভিতরে রাখি , n = n*১০ + ৯ == ৯*১০+ ৮ == ৯৮ ।
তাহলে , এভাবে যদি ভাগফল 0 না হওয়া অবদি চালাই , তাহলে কিন্তু ১৮৯ এর উলটো মান ৯৮১ পেয়ে যাবো , চলো কোড দেখি ---
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
//Nayeem Mollick Joy ,Applied Physics And Electronic Engineering, University Of Rajshahi.
bool palindrome(int x)
{
int ans;
int temp;
temp = x;
ans = 0;
while(x) {
ans = ans * 10 + x % 10;
x = x / 10;
}
return ans == temp;
}
int main()
{
int x;
int t;
scanf("%d", &t);
for (int cs = 1; cs <= t; cs++) {
scanf("%d", &x);
palindrome(x) ? printf("Case %d: Yes\n", cs) : printf("Case %d: No\n", cs);
}
return 0;
}
খুবই সহজ একটা প্রোবলেম , একটা সংখ্যা দেয়া থাকবে - তোমায় বলতে হবে , সেটা Palindromic কি না ?? Palindromic মানে , যে সংখ্যাকে উলটা করলেও , একই রকম দেখায় - এর মানে , তার মানের কোনো চেঞ্জ হয় না । যেমন , ১২২১ । এটাকে ,উলটা করে যদি লেখো , মানে শেষ থেকে যদি লেখো , তাহলেও ১২২১ ই হবে , কিন্তু - যদি সংখ্যাটি যদি - ১২৩৪ হতো , তাহলে উলটা করে লিখলে হতো ,৪৩২১ এর মানে - সংখ্যাটি চেঞ্জ হয়ে যেতো । এখন দেখবো,একটি - সংখ্যাকে কিভাবে উলটো করা যায়?নীচে দেখো
ধরো , ১৮৯ কে রিভার্স করবো , তাহলে একটি variable n ধরে নেই যার মান , প্রথমে ০ ।
১৮৯ কে যদি ১০ দিয়ে ভাগ দিয়ে ভাগশেষ বের করতে যাই , তাহলে হবে ৯ -এখন ১৮৯ কে ১০ দিয়ে ভাগ করে ফেলি , পাবো ১৮ এখন এই প্রক্রিয়াই আবার খাটাই। আর , ভাগশেষ ৯ কে আগের n এর মান কে ১০ দিয়ে গুণ দিয়ে তার সাথে যোগ দেই । একটা variable n
এর ভিতরে রাখি , n = n*১০ + ৯ == ০*১০+ ৯ == ৯।
এখন ১৮ কে যদি ১০ দিয়ে ভাগ দিয়ে ভাগশেষ বের করতে যাই , তাহলে হবে ৮ -এখন ১৮ কে ১০ দিয়ে
ভাগ করে ফেলি , পাবো ১ এখন এই প্রক্রিয়াই আবার খাটাই। আর , ভাগশেষ ৮ কে আগের n এর মান কে ১০ দিয়ে গুণ দিয়ে তার সাথে যোগ দেই । একটা variable nএর ভিতরে রাখি , n = n*১০ + ৯ == ৯*১০+ ৮ == ৯৮ ।
তাহলে , এভাবে যদি ভাগফল 0 না হওয়া অবদি চালাই , তাহলে কিন্তু ১৮৯ এর উলটো মান ৯৮১ পেয়ে যাবো , চলো কোড দেখি ---
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
//Nayeem Mollick Joy ,Applied Physics And Electronic Engineering, University Of Rajshahi.
bool palindrome(int x)
{
int ans;
int temp;
temp = x;
ans = 0;
while(x) {
ans = ans * 10 + x % 10;
x = x / 10;
}
return ans == temp;
}
int main()
{
int x;
int t;
scanf("%d", &t);
for (int cs = 1; cs <= t; cs++) {
scanf("%d", &x);
palindrome(x) ? printf("Case %d: Yes\n", cs) : printf("Case %d: No\n", cs);
}
return 0;
}
No comments:
Post a Comment