Universiteti jizzax filiali amaliy matematika fakulteti «kompyuter ilmlari va dasturlashtirish» kafedrasi
Download 140.92 Kb.
|
struktura-2
- Bu sahifa navigatsiya:
- Uzun sonlarni ko‘paytirish
- Ikki uzun sonlarni ko‘paytirish
Qo‘shish
A raqamiga b raqamini qo‘shadi va natijani a da saqlaydi: int carry = 0; for (size_t i=0; i a.push_back (0); a[i] += carry + (i < b.size() ? b[i] : 0); carry = a[i] >= base; if (carry) a[i] -= base; } Ayirish A sonidan b (a \ge b) raqamini olib tashlaydi va natijani a da saqlaydi: int carry = 0; for (size_t i=0; i carry = a[i] < 0; if (carry) a[i] += base; } while (a.size() > 1 && a.back() == 0) a.pop_back(); Bu erda biz ayirishni amalga oshirgandan so‘ng, yo‘q bo‘lgan predikatni saqlab qolish uchun etakchi nollarni olib tashlaymiz. Uzun sonlarni ko‘paytirish Uzun sonlar a ni qisqa b ga ko‘paytiradi (b < {\rm base}) va natijani a da saqlaydi: int carry = 0; for (size_t i=0; i a.push_back (0); long long cur = carry + a[i] * 1ll * b; a[i] = int (cur % base); carry = int (cur / base); } while (a.size() > 1 && a.back() == 0) a.pop_back(); Bu erda biz bo‘linishni amalga oshirgandan so‘ng, yo‘q bo‘lgan predikatni saqlab qolish uchun etakchi nollarni olib tashlaymiz. (Izoh: qo‘shimcha optimallashtirish usuli. Agar ish tezligi juda muhim bo‘lsa, unda siz ikkita bo‘linishni bittasiga almashtirishga urinib ko‘rishingiz mumkin: bo‘linishning faqat butun qismini hisoblang (kodda bu yuk o‘zgaruvchisi) va keyin bo‘linishning qolgan qismini hisoblang (bitta ko‘paytirish operatsiyasi yordamida). Qoida tariqasida, ushbu usul kodni tezlashtirishga imkon beradi, garchi unchalik katta bo‘lmasa ham.) Ikki uzun sonlarni ko‘paytirish A ni b ga ko‘paytiradi va natijani c da saqlaydi: lnum c (a.size()+b.size()); for (size_t i=0; i long long cur = c[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry; c[i+j] = int (cur % base); carry = int (cur / base); } while (c.size() > 1 && c.back() == 0) c.pop_back(); Download 140.92 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling