دیباگ توانمند


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

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

توضیح تصویر

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

کد پایتون
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))
Python
کد سی‌پلاس‌پلاس
#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;
}
C++
کد جاوا
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; 
    }
}
Java

از شما می‌خواهیم با دریافت cc دو عدد صحیح aa و bb را چاپ کنید که خروجی این برنامه به ازای این سه ورودی درست نباشد.

ورودی🔗

در تنها سطر ورودی عدد صحیح و مثبت cc داده می‌شود. 2c1002 \leq c \leq 100

خروجی🔗

در تنها سطر خروجی دو عدد صحیح aa و bb چاپ کنید که خروجی این برنامه به ازای این ورودی درست نباشد.

1a,b10001 \leq a, b \leq 1000

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

مثال🔗

ورودی نمونه ۱🔗

3
Plain text

خروجی نمونه ۱🔗

2 10
Plain text

باقی‌مانده 210=10242^{10} = 1024 بر 33 برابر 11 است ولی خروجی برنامه بالا 22 خواهد بود.

ورودی نمونه ۲🔗

5
Plain text

خروجی نمونه ۲🔗

2 10
Plain text

باقی‌مانده 210=10242^{10} = 1024 بر 55 برابر 44 است ولی خروجی برنامه بالا 11 خواهد بود.