Dislike of Threes

Dislike of Threes
Codeforces easy

يوجد \(T\) من حالات الاختبار. في كل حالة اختبار يُعطى عدد صحيح موجب \(K\). ولدينا سلسلة عددية موجبة بحيث كل قيمة فيها لا تقبل القسمة على \(3\) وآحاده لا تساوي \(3\) (\(1, 2, 4, 5, 7, \dots\)). أوجد العنصر رقم \(K\) من هذه السلسلة. القيمة \(K\) يمكن أن تكون عددًا صحيحًا بين \(1\) و\(1000\).

Noteملحوظة

العنصر رقم \(K\) في مصفوفة أو vector V هو V[K-1].

Solution

يمكننا ملاحظة أن العدد x يجب استبعاده من السلسلة إذا كان يقبل القسمة على \(3\) (x % 3 == 0) أو إذا كانت آحاده \(3\) (x % 10 == 3).

لحل المسألة، يمكننا إنشاء التسلسل كما يلي:

  1. أنشئ vector \(V\) لتخزين التسلسل.
vector<int> v;
  1. ابدأ حلقة عند \(1\) واستمر حتى يصبح حجم \(V\) يساوي \(1000\).
  2. في كل دورة، أضف العدد الحالي إلى \(V\) فقط إذا لم يكن قابلاً للقسمة على \(3\) ولا ينتهي بـ \(3\).
for (int i = 1; v.size() < 1000; i++) {
    if (i % 3 != 0 && i % 10 != 3) {
        v.push_back(i);
    }
}

بعد إنشاء السلسلة، يمكننا قراءة كل قيمة \(K\) وطباعة العنصر رقم \(K\) من vector \(V\).

int test_cases;
cin >> test_cases;

for (int i = 0; i < test_cases; i++) {
    int k;
    cin >> k;

    cout << v[k - 1] << endl;
}