Submission #227421

#TimeUsernameProblemLanguageResultExecution timeMemory
227421MKopchevAsceticism (JOI18_asceticism)C++14
100 / 100
30 ms1152 KiB
#include<bits/stdc++.h>
using namespace std;
const int nmax=1e5+42,mod=1e9+7;

int n,m;

int fact[nmax],inv[nmax];

int C(int a,int b)
{
    return 1LL*fact[a]*inv[b]%mod*inv[a-b]%mod;
}

int my_pow(long long a,int b)
{
    //cout<<"my_pow "<<a<<" "<<b<<" -> ";
    long long ret=1;
    while(b)
    {
        if(b%2)ret=ret*a%mod;
        b=b/2;
        a=a*a%mod;
    }

    //cout<<ret<<endl;

    return ret;
}
int main()
{
    scanf("%i%i",&n,&m);

    m--;

    fact[0]=1;
    for(int i=1;i<=n+1;i++)fact[i]=1LL*fact[i-1]*i%mod;

    for(int i=0;i<=n+1;i++)
        inv[i]=my_pow(fact[i],mod-2);

    int outp=0;

    for(int k=0;k<=m;k++)
    {
        long long add=1;
        if(k%2)add=mod-1;

        add=add*C(n+1,k)%mod;

        add=add*my_pow(m+1-k,n)%mod;

        //cout<<k<<" -> "<<add<<endl;

        outp=(outp+add)%mod;
    }

    printf("%i\n",outp);
    return 0;
}

Compilation message (stderr)

asceticism.cpp: In function 'int main()':
asceticism.cpp:31:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%i%i",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...