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

حامد صفری برنامه زیر را برای محاسبه \(a^b\) به پیمانه \(c\) پیاده سازی کرده است. اما این برنامه مشکل دارد که باعث می‌شود خروجی آن همواره درست نباشد.

توضیح تصویر

برنامه‌های زیر همگی یکسان هستند و صرفا به زبان‌های مختلف ترجمه شده است.

کد پایتون

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))

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

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

کد جاوا

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

از شما می‌خواهیم با دریافت \(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\) خواهد بود.

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