• محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۶۴ مگابایت

منظور از «خردکردن» nn تومان با سکه‌های c1,c2,,cm,c_1, c_2, \dots, c_m , تومانی این است که بتوان از هر کدام از این سکه‌ها تعدادی نامنفی برداریم به طوری که مجموع ارزش آن‌ها دقیقا برابر nn شود.

به صورت رسمی‌تر؛ اعداد صحیح و نامنفی مانند x1,x2,,xnx_1, x_2, \dots, x_n وجود داشته باشند به طوری که c1x1+c2x2++cmxm=nc_1 x_1 + c_2 x_2 + \dots + c_m x_m = n

توضیح تصویر

پیمان نجفی برنامه زیر را برای بررسی اینکه آیا می‌توان nn تومان را با استفاده از سکه‌های c1,c2,,cm,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')
Python

کد سی‌پلاس‌پلاس

#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;
}
C++

کد جاوا

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; 
    }
}
Java

از شما می‌خواهیم برنامه‌ای بنویسید که با دریافت nn، mm عدد صحیح و مثبت و متمایز c1,c2,,cm,c_1, c_2, \dots, c_m , را چنان معرفی کند که راه حل بالا خروجی درستی به ازای این ورودی نداشته باشد.

ورودی

در تنها سطر ورودی دو عدد صحیح و مثبت nn و mm که با فاصله از هم جدا شده‌اند، آمده است. 1mn1001 \leq m \leq n \leq 100

خروجی

در تنها سطر خروجی mm عدد صحیح و متمایز مثبت c1,c2,,cmc_1, c_2, \dots, c_m را چاپ کنید. 1cin1 \leq c_i \leq n

اگر چند پاسخ برای مسئله وجود دارد یکی را به دلخواه چاپ کنید.

اگر هیچ پاسخی برای مسئله وجود ندارد؛ تنها در یک سطر -1 چاپ کنید.

مثال

ورودی نمونه ۱

5 3
Plain text

خروجی نمونه ۱

2 3 4
Plain text

خروجی برنامه بالا به ازای این ورودی NO خواهد بود؛ چون هیچ‌کدام از سکه‌ها به تنهایی نمی‌تواند 55 را تولید کند اما اگر از ۱ سکه 22 و ۱ سکه 33 استفاده کنیم؛ می‌توانیم مقدار 55 را تولید کنیم.

ورودی نمونه ۲

5 4
Plain text

خروجی نمونه ۲

-1
Plain text

هر طور که چهار سکه مختلف از 11 تا 55 برداریم، لزوما یکی از سکه‌های 11 یا 55 را برداشته‌ایم. بنابراین همواره می‌توان مقدار 55 را تولید کرد و برنامه بالا نیز این مورد را تشخیص می‌دهد.


ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.