#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define ff first #define ss second #define INF 1000000019 #define INFL 1000000000000000099LL ll n,q,a,b,c,wyn,MOD; ll iloczyn=1; ll inw(ll x){ ll pom=MOD-2; ll co=x; ll res=1; while(pom){ if(pom&1)res*=co; co*=co; pom/=2; co%=MOD; res%=MOD; } return res; } int main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>a>>b>>c>>MOD; c++; wyn=a*b; for(ll i=1;i<=wyn;i++)iloczyn=(iloczyn*i)%MOD; for(ll i=1;i<=a;i++){ for(ll j=1;j<=b;j++){ iloczyn=(iloczyn*inw((1+a-i+b-j)))%MOD; } } cout<<wyn<<" "<<(iloczyn*iloczyn)%MOD; return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define ff first #define ss second #define INF 1000000019 #define INFL 1000000000000000099LL ll n,q,a,b,c,wyn,MOD; ll iloczyn=1; ll inw(ll x){ ll pom=MOD-2; ll co=x; ll res=1; while(pom){ if(pom&1)res*=co; co*=co; pom/=2; co%=MOD; res%=MOD; } return res; } int main() { ios_base::sync_with_stdio(0);cin.tie(0); cin>>a>>b>>c>>MOD; c++; wyn=a*b; for(ll i=1;i<=wyn;i++)iloczyn=(iloczyn*i)%MOD; for(ll i=1;i<=a;i++){ for(ll j=1;j<=b;j++){ iloczyn=(iloczyn*inw((1+a-i+b-j)))%MOD; } } cout<<wyn<<" "<<(iloczyn*iloczyn)%MOD; return 0; } |