التحقق من إمكان تمثيل مبلغ بعملتين أوليتين نسبيا
تحدد أداة التحقق من التمثيل بعملتين ما إذا كان من الممكن تكوين هدف غير سالب باستعمال أي عدد غير سالب من فئتين نقديتين محددتين.
شغّل الأداة مجانًا
يجب أن تكون الفئتان أوليتين نسبيا، وهو شرط يتيح حلا دقيقا بالحسابيات النمطية. عندما يكون الهدف قابلا للتمثيل، تتضمن النتيجة زوجا دقيقا من أعداد العملات؛ وإلا فتوضح عدم وجود مثل هذا الزوج. تفيد الأداة في التجارب العددية، وتمارين الرياضيات المتقطعة، وتصميم الفئات، والتحقق من التركيبات ذات الحجم الدقيق من دون بحث شامل.
حددوا مسألة العملتين بدقة
أدخلوا فئتين نقديتين صحيحتين موجبتين في coin_a وcoin_b، ثم أدخلوا هدفا صحيحا غير سالب. تبحث الأداة عن عددين صحيحين غير سالبين count_a وcount_b بحيث يساوي حاصل ضرب عدد العملات الأولى في coin_a، مضافا إليه حاصل ضرب عدد العملات الثانية في coin_b، قيمة الهدف تماما. لذلك لا تعني النتيجة القابلة للتمثيل إيجاد قيمة قريبة أو تركيبة دون ميزانية معينة، بل يجب أن تتحقق المساواة بدقة وألا يكون أي من العددين سالبا. الصفر هدف صالح لأن اختيار صفر من كل عملة ينتجه. كما أن الفئة ذات القيمة واحد صالحة وتجعل كل هدف غير سالب قابلا للتمثيل. يجب أن تكون المدخلات الثلاثة أعدادا صحيحة آمنة؛ فترفض الأداة القيم العشرية والنصوص الرقمية والقيم اللانهائية والأعداد خارج النطاق الدقيق في JavaScript بدلا من تقريبها خفية. ويجب أيضا أن تكون الفئتان أوليتين نسبيا، أي أن يكون القاسم المشترك الأكبر لهما واحدا، وهو ما تتحقق منه الأداة قبل الحل.
افهموا طريقة الحساب النمطي
بما أن الفئتين أوليتان نسبيا، فإن للفئة الأولى معكوسا ضربيا بترديد الفئة الثانية. تحسب الأداة هذا المعكوس بخوارزمية إقليدس الموسعة، ثم تستعمله لتحديد المرشح الوحيد للقيمة count_a بين الصفر وcoin_b ناقص واحد الذي يحقق التطابق المطلوب. بعد طرح القيمة التي تسهم بها العملات الأولى من الهدف، يتبقى فرق. إذا كان الفرق غير سالب، فإنه يقبل القسمة على coin_b ويعطي قيمة صالحة لـcount_b؛ وعندئذ تعرض الإجابة العددين بوصفهما دليلا ملموسا. أما إذا كان الفرق سالبا، فلا يوجد تمثيل غير سالب. هذه نتيجة كاملة وليست تخمينا، لأن أي حل صحيح آخر يغير count_a بمضاعف صحيح كامل من coin_b، ويغير count_b في الاتجاه المعاكس بمضاعف صحيح كامل من coin_a. وبما أن الحساب يبدأ بأصغر مرشح غير سالب لـcount_a، فلا يمكن إصلاح فرق سالب من دون جعل count_a سالبا. تعمل الطريقة بزمن لوغاريتمي ولا تجرب أعدادا كثيرة من العملات واحدا تلو الآخر.
فسروا النتائج وأخطاء الإدخال
تتضمن الإجابة التي تكون فيها representable صحيحة القيمتين count_a وcount_b. وعند ضرب كل عدد في فئته المقابلة، يعاد تكوين الهدف بدقة. الزوج المعاد هو حل صالح واحد؛ فقد يكون للهدف الكبير بما يكفي تمثيلات متعددة، ولا تدعي الأداة تعدادها كلها أو تحسينها. تحذف الإجابة الخاطئة حقلي العددين لعدم وجود زوج مناسب. ميزوا بين خطأ الفئتين غير الأوليتين نسبيا والنتيجة الخاطئة. تعني النتيجة الخاطئة أن المدخلات تستوفي العقد، لكن الهدف المحدد لا يمكن تكوينه. أما الخطأ فيعني أن زوج الفئات خارج المجال المحدد لهذه القدرة، ولذلك لا يصدر قرار بشأن قابلية التمثيل. فمثلا تشترك العملتان 6 و9 في العامل 3، ومن ثم ترفضان حتى عندما يقبل الهدف القسمة على 3. يمنع هذا الفصل الخلط بين مخالفة المجال والاستحالة الرياضية. الحساب حتمي، ولا يستعمل أي خدمة شبكية، ويعيد النتيجة نفسها للمدخلات الصحيحة الدقيقة ذاتها في المتصفح وعبر API.
حالات الاستخدام
تحققوا من مبلغ دفع دقيق
حددوا ما إذا كانت فئتان متاحتان قادرتين على تكوين المجموع المطلوب، واحصلوا على زوج من الأعداد عندما يكون ذلك ممكنا.
راجعوا تمرينا في نظرية الأعداد
اختبروا هدفا لفئتين أوليتين نسبيا، وقارنوا الحل المعاد بحسابكم اليدوي.
تحققوا من تركيبات الأحجام الثابتة
مثلوا حجمي عبوة أوليين نسبيا كعملتين، وتحققوا من إمكان تجميع كمية دقيقة من دون عبوات جزئية.
الأسئلة الشائعة
ما معنى أن يكون الهدف قابلا للتمثيل؟
يعني أن الهدف يساوي coin_a مضروبة في count_a مضافا إليها coin_b مضروبة في count_b، لأعداد صحيحة غير سالبة.
لماذا يجب أن تكون العملتان أوليتين نسبيا؟
تتبع هذه القدرة عقد العملتين الأوليتين نسبيا، وهو ما يضمن المعكوس النمطي الذي تستعمله الخوارزمية المباشرة. يرفض أي زوج له قاسم مشترك أكبر من واحد.
هل تتضمن النتيجة الصحيحة تركيبة فعلية؟
نعم. تعيد الإجابة count_a وcount_b بوصفهما تركيبة دقيقة غير سالبة تعيد تكوين الهدف.
هل تعيد الأداة جميع التركيبات الممكنة؟
لا. تقرر الأداة قابلية التمثيل وتعيد حلا واحدا عند وجوده، ولا تعدد كل الأزواج الممكنة أو تحسنها.
هل يمكن أن يكون الهدف صفرا؟
نعم. يمكن تمثيل الصفر باستعمال صفر من كل فئة نقدية.
ما تكلفة طلب API؟
تبلغ تكلفة كل طلب API $0.002. ويمكن لإصدار المتصفح تنفيذ الحساب الحتمي نفسه محليا.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/numth/coin-representable-two \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"coin_a":4,"coin_b":7,"target":23}'const res = await fetch("https://api.kit.forhosting.com/numth/coin-representable-two", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"coin_a": 4,
"coin_b": 7,
"target": 23
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/coin-representable-two",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"coin_a": 4,
"coin_b": 7,
"target": 23
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/coin-representable-two", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"coin_a":4,"coin_b":7,"target":23}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"coin_a":4,"coin_b":7,"target":23}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/coin-representable-two", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"coin_a": 4,
"coin_b": 7,
"target": 23
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.coin_representable_two",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |