A+B

A+B

Robocontestiy

Masalamiz bir ko'rishda juda osondek tuyulishi mumkin "a + b ni ekranga chiqarib qo'ysam bo'ldikanku"-deyishingiz aniq lekin siz shoshilmay masala shartlarini o'qib chiqsangiz u yerda a va b sonlarining uzunligi 10^100 darajagacha ekanligini ko'rishingiz mumkin va bu biroz aqilga sig'maydigonday ko'rinishi mumkin va bu sonlar xech bir butun tipdagi toifalarga sig'maydigan o'lchamdagi sondir. Lekin buning iloji bor qanday deysizmi string orqali katta sonlar bilan ishlash algoritimi orqali uddalasa bo'ladi.

Hop biz bu xolatda nima qilishimiz kerak:

O'zgaruvchilarni yani a va b sonlarini string toifasida olamiz. Va keyin ularni uzunliklarini tenglab olishimiz kerak.

Tenglash qoidasi bunday: Agar 1-son 2-sondan kichik bo'lsa 1-songa 2-son uzunligicha bo'lguncha boshiga 0 qo'shib ketish

Masalan:

a = 1234 => a = 1234

b = 12 => b = 0012

O'zi sonlarni 0 qo'shib tenglash nimaga kerak deyishingiz mumkin biz string bilan ishlayotganimiz uchun algorithmi bo'yicha sonlarni oxiridan boshlab qo'shib (ustun shaklida qo'shish usuli) ketamiz va 1-sonni uzunligi kamroq bo'lib qolsa 2-sonimizning kerakli xonasidagi raqamga qo'shish uchun xech qanday qiymat qolmay qoladi yani inedex bo'yicha nosozlikka duch kelishimiz mumkin va shuning uchun biz uni 0 bilan to'ldiramiz va 0 ni qo'shsak natija ham o'zgarmaydi.

Ho'p ikkala sonni ham tenglab oldik endi hosil bo'ladigan yig'indimizni xam string toifasida olamiz chunki u ham 10^100 darajasidan katta son ko'rinishida bo'lib ketadi.

Va ikki sonning oxirgi raqamlarining yig'indisini xisoblab ketadigan bir int toifasidagi o'zgaruvchi (dilda) olamiz. Endi uni umumiy sum ni xisoblab ketuvchi string toifasidagi o'zgaruvchining boshidan 10 ga bo'lgandagi qoldig'ini qo'shib boramiz (10 ga bo'lgandagi qoldiqni qo'shishimizning sababi raqamlaning yig'indisi 9 dan katta bo'lib ketishi mumkin) va dilda o'zgaruvchini 10 ga butun bo'lib ketmiz bunda 1 lar xonasidan qutulamiz agar faqat bir xonali bo'lsa 0 qiymatni olgan bo'lamiz.

Va yana bitta xolat qoladi sonlarning xonalari tugagan bo'lsa dilda o'zgaruvchini qiymatini 0 bo'masa unixam sum ni boshiga qo'shib qo'yishimiz kerak bo'ladi.

Dastur kodi:


Report Page