- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۶۴ مگابایت
منظور از «خردکردن» $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$$
پیمان نجفی برنامه زیر را برای بررسی اینکه آیا میتوان $n$ تومان را با استفاده از سکههای $c_1, c_2, \dots, c_m ,$ تومانی خرد کرد یا نه، طراحی کرده است. اما به دلیل فشار روزه، برنامه زیر نوشته شده که ایراد دارد.
برنامههای زیر همگی یکسان هستند و صرفا به زبانهای مختلف ترجمه شده است.
کد پایتون
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')
کد سیپلاسپلاس
#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;
}
کد جاوا
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;
}
}
از شما میخواهیم برنامهای بنویسید که با دریافت $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$ را تولید کرد و برنامه بالا نیز این مورد را تشخیص میدهد.
ارسال پاسخ برای این سؤال