Soldier and Bananas

Soldier and Bananas
Codeforces easy

يريد جندي أن يشتري \(w\) موزة. الموزة الأولى سعرها \(k\) دولار، والثانية \(2k\) دولار، وعمومًا الموزة رقم \(i\) سعرها \(i \cdot k\) دولار.

مع الجندي \(n\) دولار. كم دولارًا يحتاج أن يقترض من صديقه ليشتري الموزات الـ \(w\) كلها؟

القيود:

  • \(1 \le k, w \le 1000\)
  • \(0 \le n \le 10^9\)

الإدخال:

  • سطر واحد: ثلاثة أعداد صحيحة \(k\) و \(n\) و \(w\).

المخرجات:

  • عدد صحيح واحد — عدد الدولارات التي يقترضها، أو \(0\) إذا لم يحتج إلى الاقتراض.

مثال:

الإدخال:

3 17 4

المخرجات:

13
الحل

نحاكي الشراء: لكل موزة \(i\) من \(1\) إلى \(w\) نضيف سعرها \(i \cdot k\) إلى التكلفة الكلية.

إذا كانت التكلفة الكلية أكبر من \(n\)، يقترض الجندي الفرق؛ وإلا يقترض \(0\).

في المثال: \(3 + 6 + 9 + 12 = 30\) دولارًا، و \(30 - 17 = 13\).

أكبر تكلفة كلية هي \(1000 \cdot (1 + 2 + \ldots + 1000) = 500500000\)، وتتسع في int.

#include <iostream>
using namespace std;

int main() {
    int k, n, w;
    cin >> k >> n >> w;

    int cost = 0;
    for (int i = 1; i <= w; i++) {
        cost += i * k;  // the i-th banana costs i * k dollars
    }

    if (cost > n) {
        cout << cost - n << "\n";
    } else {
        cout << 0 << "\n";
    }
}