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