English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
لدينا رقم كبير، مثل num، ورقم كبير آخر، m. المهمة هي استخدام عملية التقسيم لطباعة المعدل، واستخدام المودول لطباعة الباقي من الرقم الكبير.
الناتج يجب أن يكون Remainder = xxx; المعدل = yyy
افترض أن لدينا إدخال num = 字برة num = " 14598499948265358486"، وأيضاً إدخال آخر m = 487، فإن الباقي هو 430، والقسمة هي 29976385930729688.
الإدخال: num = "214755974562154868" m = 17 الإخراج: الباقي = 15 quotient = 12632704386009109 الإدخال: num = "214" m = 5 الإخراج: الباقي = 4 Quotient = 42
الطريقة التي سنستخدمها لحل المشكلة المقدمة-
في البداية، ضع mod = 0.
من اليمين، يجب علينا استخدام mod لتحديد ذلك: mod = (mod * 10 + digit) % m.
البحث عن القسمة باستخدام quo [i] = mod / m، حيث i هو رقم الموقع للقسمة.
البداية خطوة 1 -> الإعلان عن long long ll خطوة 2 -> في الوظيفة void quotientremainder(string num, ll m) الإعلان عن vector<int> vec ضبط ll mod = 0 التحرك في For i = 0 و i < num.size() و i++ ضبط digit = num[i] - '0' ضبط mod = mod * 10 + digit ضبط quo = mod / m الإتصال بـ vec.push_back(quo) ضبط mod = mod % m الخروج من الحلقة اطبع قيمة الباقي التي هي في mod ضبط zeroflag = 0 التحرك في For i = 0 و i < vec.size() و i++ إذا كان vec[i] == 0 && zeroflag == 0 ثم التجاوز الخروج من If zeroflag = 1 اطبع القيمة التي تحتويها vec[i] الخروج من For الرجوع خطوة 3 -> في الوظيفة int main() Declare و assign num = "14598499948265358486" تقرير وتعيين ll m = 487 إتصال بالدالة quotientremainder(num, m) توقف
#include <bits/stdc++.h> using namespace std; typedef long long ll; //دالة حساب المودول void quotientremainder(string num, ll m) { //للحفاظ على المودول الكبير vector<int> vec; ll mod = 0; //تقسيم خطوة بخطوة for (int i = 0; i < num.size(); i++) { int digit = num[i] - '0'; //تحديث المودول //رقم الحالي mod = mod * 10 + digit; //تحديث المقدار int quo = mod / m; vec.push_back(quo); //تحديث mod للدور التالي mod = mod % m; } cout << "\nالباقي: " << mod << "\n"; cout << "Quotient: "; //مؤشر لاستبدال الصفر في البداية bool zeroflag = 0; for (int i = 0; i < vec.size(); i++) { if (vec[i] == 0 && zeroflag == 0) continue; zeroflag = 1; cout << vec[i]; } return; } //كتلة الرئيسية int main() { string num = "14598499948265358486"; ll m = 487; quotientremainder(num, m); return 0; }
الناتج
الباقي: 430 الناتج: 29976385930729688