- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
حامد صفری برنامه زیر را برای محاسبه \(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\) خواهد بود.
ارسال پاسخ برای این سؤال