結果

問題 No.1846 Good Binary Matrix
ユーザー tailstails
提出日時 2022-03-14 23:23:42
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 111 ms / 2,000 ms
コード長 1,014 bytes
コンパイル時間 891 ms
コンパイル使用メモリ 31,488 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-09-21 11:37:31
合計ジャッジ時間 2,936 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 8 ms
6,812 KB
testcase_01 AC 7 ms
6,940 KB
testcase_02 AC 8 ms
6,944 KB
testcase_03 AC 8 ms
6,940 KB
testcase_04 AC 8 ms
6,944 KB
testcase_05 AC 7 ms
6,940 KB
testcase_06 AC 6 ms
6,944 KB
testcase_07 AC 7 ms
6,944 KB
testcase_08 AC 7 ms
6,940 KB
testcase_09 AC 6 ms
6,940 KB
testcase_10 AC 6 ms
6,940 KB
testcase_11 AC 7 ms
6,940 KB
testcase_12 AC 6 ms
6,944 KB
testcase_13 AC 7 ms
6,944 KB
testcase_14 AC 7 ms
6,944 KB
testcase_15 AC 7 ms
6,944 KB
testcase_16 AC 109 ms
6,940 KB
testcase_17 AC 108 ms
6,940 KB
testcase_18 AC 103 ms
6,944 KB
testcase_19 AC 101 ms
6,940 KB
testcase_20 AC 111 ms
6,940 KB
testcase_21 AC 11 ms
6,944 KB
testcase_22 AC 12 ms
6,940 KB
testcase_23 AC 7 ms
6,940 KB
testcase_24 AC 7 ms
6,940 KB
testcase_25 AC 79 ms
6,944 KB
testcase_26 AC 54 ms
6,940 KB
testcase_27 AC 10 ms
6,944 KB
testcase_28 AC 19 ms
6,940 KB
testcase_29 AC 37 ms
6,940 KB
testcase_30 AC 84 ms
6,940 KB
testcase_31 AC 70 ms
6,944 KB
testcase_32 AC 89 ms
6,940 KB
testcase_33 AC 94 ms
6,940 KB
testcase_34 AC 7 ms
6,944 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function 'main':
main.c:56:17: warning: implicit declaration of function 'read'; did you mean 'rd'? [-Wimplicit-function-declaration]
   56 |                 read(0,rbuf,sizeof rbuf);
      |                 ^~~~
      |                 rd
main.c:70:17: warning: implicit declaration of function 'write' [-Wimplicit-function-declaration]
   70 |                 write(1,wp,wbuf+sizeof wbuf-wp);
      |                 ^~~~~
main.c:72:9: warning: implicit declaration of function '_exit'; did you mean '_Exit'? [-Wimplicit-function-declaration]
   72 |         _exit(0);
      |         ^~~~~
      |         _Exit

ソースコード

diff #

#pragma GCC optimize("Ofast")
#pragma GCC target("avx2")

#define rd(v) v=0;{long _c;while(_c=*rp++-48,_c>=0)v=v*10+_c;}
#define wt(v) {ulong _z=v;do*--wp=_z%10+48;while(_z/=10);}
#define rep(v,e) for(long v=0;v<e;++v)

typedef unsigned long ulong;

#define MD 1000000007

#define M 1000001
int ifac[M];

int inverse(int a){
	int b=MD;
	int u=1;
	int v=0;
	int s,t;
	while(b){
		t=a/b;
		s=b; b=a-t*b; a=s;
		s=v; v=u-t*v; u=s;
	}
	if(u<0){
		u+=MD;
	}
	return u;
}

void mkfac(){
	long x=397802501;
	for(long i=M;i--;){
		ifac[i]=x;
		x=x*i%MD;
	}
}

long modpow(long a,long b){
	long z=1;
	while(b){
		if(b&1){
			z=z*a%MD;
		}
		b>>=1;
		a=a*a%MD;
	}
	return z;
}

int main(){
	mkfac();
	long h,w;
	{
		char rbuf[64];
		read(0,rbuf,sizeof rbuf);
		char*rp=rbuf;
		rd(h);
		rd(w);
	}
	long x=1,z=0;
	rep(i,h+1){
		z=((long)ifac[i]*ifac[h-i]%MD*modpow(x-1,w)-z)%MD;
		x=x*2%MD;
	}
	z=(z+MD)*inverse(ifac[h])%MD;
	{
		char wbuf[64],*wp=wbuf+sizeof wbuf;
		wt(z);
		write(1,wp,wbuf+sizeof wbuf-wp);
	}
	_exit(0);
}
0