+ محدودیت زمان: ۰.۵ ثانیه
+ محدودیت حافظه: ۶۴ مگابایت
----------
میخواهیم همه محصولات کوئرا، یک اسم «شایسته» $n$ حرفی، با حروف کوچک انگلیسی داشته باشند که با حرف `q` آغاز شود.
به همین خاطر هر اسمی که برای یک محصول پیشنهاد میشود دو حالت دارد:
+ با `q` شروع میشود؛ پس اسم شایستهای است و **تغییری در آن نمیدهیم**. برای مثال، `quera` شایسته است پس آن را تغییر نمیدهیم.
+ با `q` شروع نمیشود پس شایسته نیست و باید یک حرف `q` به ابتدای آن اضافه کنیم تا شایسته شود. برای مثال، `media` باید به `qmedia` تغییر کند.
![توضیح تصویر](https://quera.org/qbox/view/BS62jNhgkT/picture.jpg)
از *عبدالله کشتکار* خواستیم که در ماهرمضان برنامهای بنویسد که با ورودی گرفتن اسم محصول (رشته $s$) و با توجه به توضیحات بالا آن را شایسته کند. اما به دلیل فشار روزه برنامه زیر نوشته شده که ایراد دارد.
**برنامههای زیر همگی یکسان هستند و صرفا به زبانهای مختلف ترجمه شده است.**
<details class="yellow">
<summary> کد پایتون</summary>
```python
s = input()
print('q' + s)
```
</details>
<details class="red">
<summary> کد سیپلاسپلاس</summary>
```cpp
#include <iostream>
using namespace std;
int main()
{
string s;
cin >> s;
cout << "q" + s << endl;
return 0;
}
```
</details>
<details class="blue">
<summary> کد جاوا</summary>
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("q" + sc.next());
}
}
```
</details>
از شما میخواهیم برنامهای بنویسید که با دریافت عدد $n$ یک رشته مانند $s$ شامل $n$ حرف کوچک انگلیسی چاپ کند و برنامه فوق به ازای این رشته $s$ خروجی مطابق توضیحات بالا ندهد.
# ورودی
در تنها سطر ورودی عدد صحیح و مثبت $n$ آمده است که طول رشته مورد انتظار در خروجی را نشان میدهد.
$$1 \leq n \leq 100$$
# خروجی
یک رشته به طول $n$، از **حروف کوچک انگلیسی** چاپ کنید که برنامه بالا به ازای این ورودی، به درستی کار نمیکند.
**اگر چند جواب مختلف برای این مسئله وجود دارد یک جواب درست را به دلخواه چاپ کنید.**
# مثال
## ورودی نمونه ۱
```
5
```
## خروجی نمونه ۱
```
quera
```
این خروجی یکی از خروجیهای درست است، چون اگر آن را به برنامه عبدالله ورودی دهیم خروجی آن `qquera` میشود که خروجی درستی نیست.
## ورودی نمونه ۲
```
1
```
## خروجی نمونه ۲
```
q
```
خروجی برنامه عبدالله به ازای این ورودی `qq` خواهد بود ولی باید خروجی آن `q` باشد.
دیباگ شایسته
+ محدودیت زمان: ۰.۵ ثانیه
+ محدودیت حافظه: ۶۴ مگابایت
----------
منظور از یک «جایشگت» از اعداد $1$ تا $n$ یعنی دنبالهای به طول $n$ مثل $p_1, p_2, \dots, p_n \,$ که هر کدام از اعداد $1$ تا $n$ دقیقا یکبار در آن ظاهر شده است.
به یک دنباله مثل $a_1, a_2, \dots, a_n \,$ «صعودی» میگوییم هرگاه برای هر $i$ که $1 \leq i \leq n - 1\,$ داریم $a_i < a_{i + 1} \,$.
![توضیح تصویر](https://quera.org/qbox/view/3wGmaqVgbl/picture.jpg)
از *محمد جعفری* خواستیم که در ماهرمضان برنامهای بنویسد که با ورودی گرفتن $n$ و یک جایگشت از اعداد $1$ تا $n$ آن را صعودی مرتب کند. اما به دلیل فشار روزه برنامه زیر نوشته شده که ایراد دارد.
**برنامههای زیر همگی یکسان هستند و صرفا به زبانهای مختلف ترجمه شده است.**
<details class="yellow">
<summary> کد پایتون </summary>
```python
n = int(input())
arr = list(map(int, input().split()))
for i in range(n):
for j in range(i, n - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
print(*arr)
```
</details>
<details class="red">
<summary> کد سیپلاسپلاس</summary>
```cpp
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int arr[n];
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n; i++)
for (int j = i; j + 1 < n; j++)
if (arr[j] > arr[j + 1])
swap(arr[j], arr[j + 1]);
for (int i = 0; i < n; i++)
{
cout << arr[i];
if (i == n - 1)
cout << '\n';
else
cout << ' ';
}
return 0;
}
```
</details>
<details class="blue">
<summary> کد جاوا</summary>
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++)
arr[i] = sc.nextInt();
for (int i = 0; i < n; i++)
for (int j = i; j + 1 < n; j++)
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
for (int i = 0; i < n; i++) {
System.out.print(arr[i]);
if (i == n - 1)
System.out.println();
else
System.out.print(' ');
}
}
}
```
</details>
با دریافت عدد $n$ جایگشتی از $1$ تا $n$ را چاپ کنید که این برنامه به ازای این جایگشت خروجی نادرست میدهد.
# ورودی
در تنها سطر ورودی عدد صحیح و مثبت $n$ داده میشود.
$$3 \leq n \leq 100$$
# خروجی
در تنها سطر خروجی یک جایگشت از اعداد $1$ تا $n$ را چاپ کنید که این برنامه داده شده در سوال فوق خروجی نادرست میدهد.
**اگر چند جواب برای مسئله وجود دارد میتوانید هر کدام که میخواهید را چاپ کنید.**
# مثال
## ورودی نمونه ۱
```
3
```
## خروجی نمونه ۱
```
3 2 1
```
خروجی برنامههای بالا به ازای این ورودی `2 1 3` است که صعودی مرتب نشده است.
## ورودی نمونه ۲
```
5
```
## خروجی نمونه ۲
```
3 4 2 5 1
```
خروجی برنامههای بالا به ازای این ورودی `3 2 1 4 5` است که صعودی مرتب نشده است.
دیباگ مرتبسازی
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
*حامد صفری* برنامه زیر را برای محاسبه $a^b$ به پیمانه $c$ پیاده سازی کرده است. اما این برنامه مشکل دارد که باعث میشود خروجی آن همواره درست نباشد.
![توضیح تصویر](https://quera.org/qbox/view/nTDuoi0DjA/picture.jpg)
**برنامههای زیر همگی یکسان هستند و صرفا به زبانهای مختلف ترجمه شده است.**
<details class="yellow">
<summary> کد پایتون</summary>
```python
def power(a, b, c):
if b == 0:
return 1
ret = power(a, b // 2, c)
ret *= ret
if b % 2 == 1:
ret *= a
return ret % c
a, b, c = map(int, input().split())
a %= c
b %= c
print(power(a, b, c))
```
</details>
<details class="red">
<summary> کد سیپلاسپلاس</summary>
```cpp
#include <iostream>
using namespace std;
int power(int a,int b,int c)
{
if (b == 0)
return 1;
int ret = power(a, b / 2, c);
ret *= ret;
if (b % 2 == 1)
ret *= a;
return ret % c;
}
int main()
{
int a, b, c;
cin >> a >> b >> c;
a %= c;
b %= c;
cout << power(a, b, c) << endl;
return 0;
}
```
</details>
<details class="blue">
<summary> کد جاوا</summary>
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(), b = sc.nextInt(), c = sc.nextInt();
a %= c;
b %= c;
System.out.println(power(a, b, c));
}
public static int power(int a,int b,int c) {
if (b == 0)
return 1;
int ret = power(a, b / 2, c);
ret *= ret;
if (b % 2 == 1)
ret *= a;
return ret % c;
}
}
```
</details>
از شما میخواهیم با دریافت $c$ دو عدد صحیح $a$ و $b$ را چاپ کنید که خروجی این برنامه به ازای این سه ورودی درست نباشد.
# ورودی
در تنها سطر ورودی عدد صحیح و مثبت $c$ داده میشود.
$$2 \leq c \leq 100$$
# خروجی
در تنها سطر خروجی دو عدد صحیح $a$ و $b$ چاپ کنید که خروجی این برنامه به ازای این ورودی درست نباشد.
$$1 \leq a, b \leq 1000$$
**اگر چند جواب برای این مسئله وجود دارد هر کدام را که میخواهید به دلخواه چاپ کنید.**
# مثال
## ورودی نمونه ۱
```
3
```
## خروجی نمونه ۱
```
2 10
```
باقیمانده $2^{10} = 1024$ بر $3$ برابر $1$ است ولی خروجی برنامه بالا $2$ خواهد بود.
## ورودی نمونه ۲
```
5
```
## خروجی نمونه ۲
```
2 10
```
باقیمانده $2^{10} = 1024$ بر $5$ برابر $4$ است ولی خروجی برنامه بالا $1$ خواهد بود.
دیباگ توانمند
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۶۴ مگابایت
----------
منظور از «خردکردن» $n$ تومان با سکههای $c_1, c_2, \dots, c_m \,$ تومانی این است که بتوان از هر کدام از این سکهها تعدادی نامنفی برداریم به طوری که مجموع ارزش آنها دقیقا برابر $n$ شود.
به صورت رسمیتر؛ اعداد صحیح و نامنفی مانند $x_1, x_2, \dots, x_n$ وجود داشته باشند به طوری که
$$c_1 x_1 + c_2 x_2 + \dots + c_m x_m = n$$
![توضیح تصویر](https://quera.org/qbox/view/buE2XNLYyZ/picture.jpg)
*پیمان نجفی* برنامه زیر را برای بررسی اینکه آیا میتوان $n$ تومان را با استفاده از سکههای $c_1, c_2, \dots, c_m \,$ تومانی خرد کرد یا نه، طراحی کرده است. اما به دلیل فشار روزه، برنامه زیر نوشته شده که ایراد دارد.
**برنامههای زیر همگی یکسان هستند و صرفا به زبانهای مختلف ترجمه شده است.**
<details class="yellow">
<summary> کد پایتون</summary>
```python
n, m = map(int, input().split())
c = list(map(int, input().split()))
for i in range(m):
if n % c[i] == 0:
print('YES')
break
else:
print('NO')
```
</details>
<details class="red">
<summary> کد سیپلاسپلاس</summary>
```cpp
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
int c[m];
for (int i = 0; i < m; i++)
cin >> c[i];
for (int i = 0; i < m; i++)
{
if (n % c[i] == 0)
{
cout << "YES\n";
return 0;
}
}
cout << "NO\n";
return 0;
}
```
</details>
<details class="blue">
<summary> کد جاوا</summary>
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(), m = sc.nextInt();
int[] c = int[m];
for (int i = 0; i < m; i++)
c[i] = sc.nextInt();
for (int i = 0; i < m; i++)
if (n % c[i] == 0) {
System.out.println("YES");
return;
}
System.out.println("NO");
return;
}
}
```
</details>
از شما میخواهیم برنامهای بنویسید که با دریافت $n$، $m$ عدد صحیح و مثبت و **متمایز** $c_1, c_2, \dots, c_m \,$ را چنان معرفی کند که راه حل بالا خروجی درستی به ازای این ورودی نداشته باشد.
# ورودی
در تنها سطر ورودی دو عدد صحیح و مثبت $n$ و $m$ که با فاصله از هم جدا شدهاند، آمده است.
$$1 \leq m \leq n \leq 100$$
# خروجی
در تنها سطر خروجی $m$ عدد صحیح و متمایز مثبت $c_1, c_2, \dots, c_m$ را چاپ کنید.
$$1 \leq c_i \leq n$$
**اگر چند پاسخ برای مسئله وجود دارد یکی را به دلخواه چاپ کنید.**
**اگر هیچ پاسخی برای مسئله وجود ندارد؛ تنها در یک سطر `-1` چاپ کنید.**
# مثال
## ورودی نمونه ۱
```
5 3
```
## خروجی نمونه ۱
```
2 3 4
```
خروجی برنامه بالا به ازای این ورودی `NO` خواهد بود؛ چون هیچکدام از سکهها به تنهایی نمیتواند $5$ را تولید کند اما اگر از ۱ سکه $2$ و ۱ سکه $3$ استفاده کنیم؛ میتوانیم مقدار $5$ را تولید کنیم.
## ورودی نمونه ۲
```
5 4
```
## خروجی نمونه ۲
```
-1
```
هر طور که چهار سکه مختلف از $1$ تا $5$ برداریم، لزوما یکی از سکههای $1$ یا $5$ را برداشتهایم. بنابراین همواره میتوان مقدار $5$ را تولید کرد و برنامه بالا نیز این مورد را تشخیص میدهد.
دیباگ خردکردن
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
الگوریتمهایی وجود دارند که با استفاده از آنها میتوان رشتهها را به عدد تبدیل کرد. (چون کار کردن با آنها راحت و سریع است.)
اگر فرض کنیم رشته داده شده تنها از حروف کوچک انگلیسی تشکیل شده است. ارزش هر حرف انگلیسی را برابر تعداد حروفی در نظر بگیرید که در الفبای انگلیسی از آنها کوچکتر است.
برای مثال اگر این ارزشگذاری را با $f$ نشاندهیم؛ مقدار $f(a) = 0$ و مقدار $f(z) = 25$ خواهد بود.
حال برای تبدیل رشته $n$ حرفی $s=s_0 s_1 \dots s_{n - 1} \,$ به عدد به صورت زیر عمل میکنیم. ابتدا دو عدد صحیح و مثبت و ثابت $m$ و $b$ را در نظر میگیریم. سپس عدد متناظر رشته $s$ که با $hash(s)$ نمایش داده میشود برابر است با:
$$hash(s) = f(s_0) . b^{n - 1} + f(s_1) . b^{n - 2} + \dots + f(s_{n - 2}) . b + f(s_{n - 1}) \mod m$$
اما متاسفانه این تبدیل یک به یک نیست. یعنی ممکن است دو رشته متفاوت به یک عدد تبدیل شوند و این اتفاق خوبی نیست.
![توضیح تصویر](https://quera.org/qbox/view/miFt4gmf9H/picture.jpg)
*محمدحسین باقری* رشتهها را با الگوریتم بالا به عدد تبدیل میکند و ادعا میکند که همواره رشتههای مختلف به اعداد مختلف تبدیل میشوند. اما به دلیل فشار روزه، اشتباه میکند.
**برنامههای زیر همگی یکسان هستند و صرفا به زبانهای مختلف ترجمه شده است.**
<details class="yellow">
<summary> کد پایتون</summary>
```python
def hash(st, b, m):
ret = 0
for i in range(len(st)):
ret = (ret * b + (ord(st[i]) - ord('a'))) % m
return ret
n = int(input())
b = int(input())
m = int(input())
s = input()
t = input()
if hash(s, b, m) == hash(t, b, m):
print('YES')
else:
print('NO')
```
</details>
<details class="red">
<summary> کد سیپلاسپلاس</summary>
```cpp
#include <iostream>
#include <string>
using namespace std;
int hsh(string st, int b, int m)
{
int ret = 0;
for (int i = 0; i < (int)st.size(); i++)
ret = (1LL * ret * b + (st[i] - 'a')) % m;
return ret;
}
int main()
{
int n, b, m;
cin >> n >> b >> m;
string s, t;
cin >> s >> t;
if (hsh(s, b, m) == hsh(t, b, m))
cout << "YES\n";
else
cout << "NO\n";
return 0;
}
```
</details>
<details class="blue">
<summary> کد جاوا</summary>
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(), b = sc.nextInt(), m = sc.nextInt();
String s = sc.next(), t = sc.next();
if (hash(s, b, m) == hash(t, b, m))
System.out.println("YES");
else
System.out.println("NO");
}
public static int hash(String st, int b,int m) {
long ret = 0;
for (int i = 0; i < st.length(); i++)
ret = ((long)ret * (long)b + ((long)st.charAt(i) - (long)'a')) % (long)m;
return (int)ret;
}
}
```
</details>
از شما میخواهیم با ورودی گرفتن $n$، $b$ و $m$ دو رشته **متفاوت** به طول $n$ به جای $s$ و $t$ که از حروف کوچک انگلیسی تشکیل شدهاند، چاپ کنید؛ که برنامهی بالا به اشتباه، آنها را برابر درنظر بگیرد.
# ورودی
در تنها سطر ورودی سه عدد صحیح $n$، $b$ و $m$ به ترتیب ظاهر میشوند.
$$10 \leq n \leq 100$$
$$1 \leq b \leq 100$$
$$1\leq m \leq 10^9$$
# خروجی
خروجی شامل دو سطر است:
+ سطر اول خروجی، رشته $s$ که شامل $n$ حرف کوچک انگلیسی است.
+ سطر دوم خروجی، رشته $t$ که شامل $n$ حرف کوچک انگلیسی است.
**اگر چند جواب مختلف برای این مسئله وجود دارد یک جواب درست را به دلخواه چاپ کنید.**
**با توجه به محدودیتهای سوال، میتوان ثابت کرد که همواره حداقل یک جواب برای این مسئله وجود دارد.**
# مثال
## ورودی نمونه ۱
```
10 26 2
```
## خروجی نمونه ۱
```
queraquera
teamsteams
```
## ورودی نمونه ۲
```
10 2 13
```
## خروجی نمونه ۲
```
mzmzmzmzmz
zmzmzmzmzm
```