Birinci qutuya şarın hər hansı birini qoya bilərik. İkinci qutudakı şarın rəngi birinci qutudakı şarın rəngindən fərqli olmalıdır. Buna görə ikinci qutuya n - 1 qalan rənglərdən istənilən rəngdə şar qoya bilərik. -ci qutuya i-1-ci qutudakı şarın rəngindən fərqli hər hansı bir rəngdə şar qoya bilərik.
Beləliklə, şarların qutulara yerləşdirilməsinin fərqli variantlarının sayı bərabərdir:
Alqoritmin reallaşdırılması
Hesablamaların aparılacağı modulu təyin edək.
#define MOD 1000000007powmod funksiyası x^n~mod~m dəyərini hesablayır.
long long powmod(long long x, long long n, long long m)
{
if (n == 0) return 1;
if (n % 2 == 0) return powmod((x * x) % m, n / 2, m);
return (x * powmod(x, n - 1, m)) % m;
}Proqramın əsas hissəsi. Giriş dəyəri -i oxuyuruq.
scanf("%lld", &n);Cavabı hesablayır və çıxışa yazırıq.
res = (powmod(n - 1, n - 1, MOD) * n) % MOD;
printf("%d\n", res);Java reallaşdırılması
import java.util.*;
public class Main
{
public final static long MOD = 1000000007;
static long PowMod(long x, long n, long m)
{
if (n == 0) return 1;
if (n % 2 == 0) return PowMod((x * x) % m, n / 2, m);
return (x * PowMod(x, n - 1, m)) % m;
}
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
long n = con.nextLong();
long res = (PowMod(n - 1, n - 1, MOD) * n) % MOD;
System.out.println(res);
con.close();
}
}Python reallaşdırılması — öz dərəcə funksiyası
myPow funksiyası x^n~mod~m dəyərini hesablayır.
def myPow(x, n, m):
if (n == 0): return 1
if (n % 2 == 0): return myPow((x * x) % m, n / 2, m)
return (x * myPow(x, n - 1, m)) % mProqramın əsas hissəsi. Hesablamaları aparmaq üçün mod = 10^9 + 7 modulunu təyin edək.
mod = 10 ** 9 + 7Giriş dəyəri -i oxuyuruq.
n = int(input())Cavabı hesablayır və çıxışa yazırıq.
print(n * myPow(n - 1, n - 1, mod) % mod)Python reallaşdırılması
Hesablamaları aparmaq üçün mod = 10^9 + 7 modulunu təyin edək.
mod = 10 ** 9 + 7Giriş dəyəri -i oxuyuruq.
n = int(input())Cavabı hesablayır və çıxışa yazırıq.
print(n * pow(n - 1, n - 1, mod) % mod)