A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

● Codeforces Round #211 (Div. 2) - A. Soroban

سه شنبه, ۲۱ آبان ۱۳۹۲، ۰۷:۴۰ ب.ظ

در کشور ژاپن، چرتکه ای توسعه یافته به نام Soroban دارند که در مدارس ابتدایی استفاده آن را به دانش آموزان می آموزند تا جمع و تفریق را به خوبی یاد بگیرند. ما قصد نداریم در مورد آنها صحبت کنیم، بیایید نگاهی دقیق تر به ساختار این چرتکه بیاندازیم:

Soroban دارای تعدادی میله افقی و هر میله شامل 5 مهره است. نوار عمودی که یک مهره سمت چپ را از 4 مهره ی دیگر جدا می کند، نوار حساب نام دارد، این مهره تک نامیده می شود (طبق شکل) و مهره های سمت راست نوار حساب را ایچی می گویند. هر میله ی افقی رقمی از 0 تا 9 را نشان می دهد که با این الگوریتم، به سادگی می توان آنرا بدست آورد:

     ابتدا همه ی میله ها، رقم 0 را نشان می دهند. (مهره های ایچی، کاملاً راست و مهره ی تک، چپ) مثل ردیف اوّل در شکل.

     اگر مهره ی تک به سمت راست برود، 5 واحد اضافه می شود.

     به ازای هریک از مهره های ایچی که سمت چپ برود، 1 واحد اضافه می شود.

بنابراین در شکل، ردیف اوّل نشان دهنده ی رقم 0، ردیف دوّم نشان دهنده ی رقم 2 و ردیف سوّم نشان دهنده ی رقم 7 است که چرتکه عدد 720 را نشان می دهد.

کار شما نوشتن برنامه ای است که به ازای هر عددی، Soroban آن را نمایش دهد...

input
720
output
O-|-OOOO
O-|OO-OO
-O|OO-OO

ورودی:

خط اوّل فقط شامل یک عدد صحیح n است. (n ≤ 109) 


خروجی:

نسخه قابل چاپ چرتکه که در هر خط، یک میله شرح یک رقم باشد را چاپ کنید.( همانطور که زیر تصویر ذکر شده)

نماد مهره به شکل حرف بزرگ انگلیسی O ، تکه میله خالی از مهره، به شکل کاراکتر - و نوار حساب به شکل |  است. اگر n عددی k رقمی باشد، مانند مثال k میله با کاراکتر های گفته شده بسازید که شرایط را داشته باشند و هر میله را در یک خط چاپ کنید. (فرض کنید عدد با 0 شروع نشود) 


// A Drop of the Programming Sea - adops.blog.ir #include <iostream> #include <cstring> using namespace std; int main() { string str; cin >> str; for(int i=str.length()-1; i>=0; i--) switch(str[i]) { case '0': cout << "O-|-OOOO" << endl; break; case '1': cout << "O-|O-OOO" << endl; break; case '2': cout << "O-|OO-OO" << endl; break; case '3': cout << "O-|OOO-O" << endl; break; case '4': cout << "O-|OOOO-" << endl; break; case '5': cout << "-O|-OOOO" << endl; break; case '6': cout << "-O|O-OOO" << endl; break; case '7': cout << "-O|OO-OO" << endl; break; case '8': cout << "-O|OOO-O" << endl; break; case '9': cout << "-O|OOOO-" << endl; break; } }


نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی