Submission #1686509
Source Code Expand
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<utility>
#include<cmath>
#include<cstring>
#include<queue>
#include<stack>
#include<cstdio>
#include<sstream>
#include<iomanip>
#include<assert.h>
#define loop(i,a,b) for(int i=a;i<b;i++)
#define rep(i,a) loop(i,0,a)
#define pb push_back
#define all(in) in.begin(),in.end()
#define shosu(x) fixed<<setprecision(x)
using namespace std;
//kaewasuretyuui
typedef long long ll;
typedef ll Def;
typedef pair<Def,Def> pii;
typedef vector<Def> vi;
typedef vector<vi> vvi;
typedef vector<pii> vp;
typedef vector<vp> vvp;
typedef vector<string> vs;
typedef vector<double> vd;
typedef vector<vd> vvd;
typedef pair<Def,pii> pip;
typedef vector<pip>vip;
//#define mt make_tuple
//typedef tuple<double,int,double> tp;
//typedef vector<tp> vt;
template<typename A,typename B>bool cmin(A &a,const B &b){return a>b?(a=b,true):false;}
template<typename A,typename B>bool cmax(A &a,const B &b){return a<b?(a=b,true):false;}
const double PI=acos(-1);
const double EPS=1e-7;
Def inf=sizeof(Def)==sizeof(long long)?9e18:1e9;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
//
// extgcd(a=12707,b=12319,x,y) -> x=32,y=-33,return 97=gcd
ll extgcd(ll a,ll b,ll &x,ll &y){//ax+by=gcd(a,b)=d
ll d=a;
if(b!=0){
d=extgcd(b,a%b,y,x);
y-=(a/b)*x;
}else{
x=1;y=0;
}
return d;
}
// x= mod1 mod div1
// x= mod2 mod div2
// であるxを返す
ll crt(ll div1,ll mod1,ll div2,ll mod2){
ll x,y;
ll d=extgcd(div1,div2,x,y);
if(d-1)assert(0);
ll ndiv=div1*div2;
// ll nmod=(x*(mod2-mod1)*div1+mod1)%ndiv;
ll nmod=(mod1*div2%ndiv*(ndiv+y)%ndiv+mod2*div1%ndiv*(ndiv+x)%ndiv)%ndiv;
return nmod;
}
#define MOD 1000000007
#define MAX 1000010
int sosu[MAX]={1,1,0};
vi sos;
bool h=false;
void init(){
h=true;
for(int i=2;i*i<=MAX;i++)if(!sosu[i])
for(int j=i*2;j<MAX;j+=i)sosu[j]=true;
rep(i,MAX)if(sosu[i]==0)sos.pb(i);
}
//nCr mod m
//n<1e7 r,m:任意
//前計算O(nloglogn) 本計算O(n/logn)
ll nCr_m(ll n,ll r,ll m){
if(!h)init();
if(n<0||r<0||r>n)return 0;
if(r>n/2)r=n-r;
vi A(n);
rep(i,r)A[i]=n-i;
rep(p,sos.size()){
if(sos[p]>r)break;
for(ll q=sos[p];q<=r;q*=sos[p]){
int m=n%q;
for(int i=m,j=0;j<r/q;i+=q,j++)A[i]/=sos[p];
}
}
ll out=1;
rep(i,r)(out*=A[i])%=m;
return out;
}
ll nCr(ll n,ll r,ll m){
ll out=1;
while(n>0){
(out*=nCr_m(n%m,r%m,m))%=m;
n/=m;r/=m;
}
return out;
}
int main(){
ll n,m;
cin>>n>>m;
cout<<nCr(n-1+m-1,m-1,MOD)<<endl;
}
Submission Info
Submission Time |
|
Task |
C - 経路 |
User |
ixmel_rd |
Language |
C++14 (GCC 5.4.1) |
Score |
101 |
Code Size |
2599 Byte |
Status |
AC |
Exec Time |
17 ms |
Memory |
6388 KB |
Judge Result
Set Name |
Sample |
Dataset1 |
Dataset2 |
All |
Score / Max Score |
0 / 0 |
50 / 50 |
50 / 50 |
1 / 1 |
Status |
|
|
|
|
Set Name |
Test Cases |
Sample |
s0.txt, s1.txt |
Dataset1 |
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, s0.txt |
Dataset2 |
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, s0.txt, s1.txt |
All |
000.txt, 001.txt, 002.txt, 003.txt, 004.txt, 005.txt, 006.txt, 007.txt, 008.txt, 009.txt, 010.txt, 011.txt, 012.txt, 013.txt, 014.txt, 015.txt, 016.txt, 017.txt, 018.txt, 019.txt, 020.txt, 021.txt, 022.txt, 023.txt, 024.txt, 025.txt, 026.txt, 027.txt, 028.txt, 029.txt, 030.txt, 031.txt, 032.txt, s0.txt, s1.txt |
Case Name |
Status |
Exec Time |
Memory |
000.txt |
AC |
11 ms |
5240 KB |
001.txt |
AC |
11 ms |
5240 KB |
002.txt |
AC |
10 ms |
5240 KB |
003.txt |
AC |
10 ms |
5240 KB |
004.txt |
AC |
11 ms |
5240 KB |
005.txt |
AC |
11 ms |
5240 KB |
006.txt |
AC |
10 ms |
5240 KB |
007.txt |
AC |
10 ms |
5240 KB |
008.txt |
AC |
10 ms |
5240 KB |
009.txt |
AC |
10 ms |
5240 KB |
010.txt |
AC |
10 ms |
5368 KB |
011.txt |
AC |
10 ms |
5240 KB |
012.txt |
AC |
10 ms |
5240 KB |
013.txt |
AC |
10 ms |
5240 KB |
014.txt |
AC |
10 ms |
5240 KB |
015.txt |
AC |
10 ms |
5240 KB |
016.txt |
AC |
10 ms |
5240 KB |
017.txt |
AC |
10 ms |
5240 KB |
018.txt |
AC |
10 ms |
5240 KB |
019.txt |
AC |
10 ms |
5240 KB |
020.txt |
AC |
10 ms |
5240 KB |
021.txt |
AC |
10 ms |
5240 KB |
022.txt |
AC |
15 ms |
6260 KB |
023.txt |
AC |
14 ms |
6004 KB |
024.txt |
AC |
13 ms |
5876 KB |
025.txt |
AC |
10 ms |
5240 KB |
026.txt |
AC |
11 ms |
5240 KB |
027.txt |
AC |
13 ms |
5876 KB |
028.txt |
AC |
14 ms |
6132 KB |
029.txt |
AC |
12 ms |
5492 KB |
030.txt |
AC |
14 ms |
6004 KB |
031.txt |
AC |
13 ms |
5748 KB |
032.txt |
AC |
17 ms |
6388 KB |
s0.txt |
AC |
10 ms |
5240 KB |
s1.txt |
AC |
10 ms |
5240 KB |