Skip to main content

[ UVa ] 1266 - Magic Square

  • Magic Square এমন একটি Square যার যেকোনো row, column, diagonal ভেলু গুলো যোগ করলে যোগফল সবসময় একই হবে । 
  • এই সমস্যা তে আমাদের কে Magic Square এ সাইজ দেয়া থাকবে প্রিন্ট করতে হবে Magic Square টি । 
  • Siamese (De la Loub`ere) method ব্যবহার করে এই সমস্যার সমাধান করা যায় । 
কোড :
/**
* Problem : 1266 - Magic Square.
* Verdict : Accepted.
* Writer : Mehadi Hasan Menon.
* Time : 0.00 ms.
**/
#include <iostream>
using namespace std;
int magic[20][20];
int main()
{
freopen("input.txt", "r+", stdin);
int n;
bool flag = false;
while(scanf("%d", &n) != EOF)
{
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
magic[i][j] = 0;
}
}
int sz = n * n;
int r = 1;
int c = n / 2 + 1;
for(int i = 1; i <= sz; )
{
// both row & col is out of square
if(r == 0 && c == n + 1) {
r = 2;
c = n;
}
else if(r == 0) {
// only row is out of square
r = r + n;
}
else if(c == n + 1) {
// only col is out of square
c = c - n;
}
if(magic[r][c] == 0) {
// go through upper right corner
magic[r][c] = i;
r = r - 1;
c = c + 1;
// increment value;
i += 1;
}
else {
// if magic square is already fill then
// back to original and go down
r = r + 2;
c = c - 1;
}
}
int sum = 0;
for(int c = 1; c <= n; c++) {
sum += magic[1][c];
}
if(flag) {
printf("\n");
}
flag = true;
printf("n=%d, sum=%d\n", n, sum);
for(r = 1; r <= n; r++)
{
for(int c = 1; c <= n; c++)
{
if(n == 3) {
printf("%2d", magic[r][c]);
}
else if(n < 10) {
printf("%3d", magic[r][c]);
}
else {
printf("%4d", magic[r][c]);
}
}
printf("\n");
}
}
return 0;
}
view raw 1266.cpp hosted with ❤ by GitHub

Comments

Popular posts from this blog

উবুন্টুতে রুট পাসওয়ার্ড ভুলে তা রিকভার করার উপায় ।

যদি কেউ রুট পাসওয়ার্ড ভুলে যান তাহলে নিচের কাজ গুলো করে নতুন পাসওয়ার্ড সেট করতে পারবেন: প্রথমে পিসি রিস্টার্ট দিন । দিয়ে UP/DOWN করে kernel version সিলেক্ট করে e চাপুন । ব্ল্যাক Screen আসবে এবার একটা Space দিয়ে লিখুন “Single” [ Enter ] এরপর b চাপুন ফলাফল : লিনাক্সের Single user Mood এ চলে আসছেন । এখন লিখুন passwd root [ Enter ] এখন নতুন পাসওয়ার্ড খানা টাইপ করেন [ এন্টার ] আবার টাইপ করেন [ এন্টার ] কাজ শেষ , এবার reboot টাইপ করেন । এখন নতুন পাসওয়ার্ড দিয়ে লগইন করেন। পুনশ্চ : যদি আপনার উইন্ডোজ এর সাথে ডুয়েল বুট করা থাকে তবে এই প্রক্রিয়া কাজ করবে না ।

Fix The BIOS in this system is not fully ACPI compliant in Windows 7

এই সমস্যা সমাধান করার জন্য আপনি নিচের ধাপ গুলো অনুসরণ করুন। ধাপ ১ :  আপানর  কম্পিউটার এ উইন্ডোজ এর ডিস্ক থেকে বুট করুন । নীচের মত উইন্ডো আসলে Shift + F10 চাপুন । এর ফলে কমান্ড প্রম্প্ট ওপেন হবে। ধাপ ২ : এখন CMD তে নিচের কমান্ড গুলি ধারবাহিক ভাবে লিখুন C: bootrec /FixMbr bootrec /FixBoot bootrec /RebuildBcd exit  এখানে  C হলো যে ড্রাইভ এ উইন্ডোজ দেয়া আছে।  আপনার যদি অন্য কোনো ড্রাইভ ( D, E, F, ..... ) এ উইন্ডোজ দেয়া থাকে তবে আপনাকে C এর জায়গায় সেই ড্রাইভ এর নাম লিখতে হবে।  উপরের সব কমান্ড যদি সঠিক ভাবে বিল্ড হয় তবে আপনি আপনার কম্পিউটার রিস্টার্ট দিন।  দেখবেন আপনার সমস্যা সমাধান হয়ে গেছে :D