読者です 読者をやめる 読者になる 読者になる

メモ

yukicoderで遊んでいる競プロゆるふわ勢

yukicoder No.431 死亡フラグ

問題はこちら
No.431 死亡フラグ - yukicoder

やるだけ
生存するのは、死亡フラグの合計が2未満or生存フラグが1

int main(){
	int a,b,c,d;
	scanf("%d%d%d%d",&a,&b,&c,&d);
	puts(a+b+c<2|d?"SURVIVED":"DEAD");
	return 0;
}

少し読み替えて、フラグの合計が2未満or生存フラグが1

s;
main(i){
	for(;~scanf("%d",&i);s+=i);
	s=!puts(s<2|i?"SURVIVED":"DEAD");
}

さて、入力は7文字。ということは64bit整数に読み込めば数値として処理できるな?

long a[]={
13546189952655408,13546189952655409,13546189952720944,13546194247622704,
13827664929366064,13827669224333360,13827664929431600,13827669224398896,
13827664929366065,13827669224333361,13827664929431601,13827669224398897},
b[]={13546189952720945,13546194247688240,13546194247622705,13546194247688241};
i,j,k;
t,x;
main(){
	for(i=2;i<100;i++)for(j=i;++j<100;)for(k=j;++k<100;){
		t=a[0]%k%j%i;
		if(t){
			if(b[0]%k%j%i==0&&b[1]%k%j%i==0&&b[2]%k%j%i==0&&b[3]%k%j%i==0){
				for(x=0;x<12;x++)if(a[x]%k%j%i==0)break;
				if(x==12)printf("a %d %d %d\n",i,j,k);
			}
		}else{
			if(b[0]%k%j%i&&b[1]%k%j%i&&b[2]%k%j%i&&b[3]%k%j%i){
				for(x=0;x<12;x++)if(a[x]%k%j%i)break;
				if(x==12)printf("b %d %d %d\n",i,j,k);
			}
		}
	}
}

が…… 駄目っ……
……まあkの範囲を1000まで広げると沢山みつかるんだけどね

ということで完成したものがこちら

long s;main(){s=gets(&s)<puts(s%201%9%8?"SURVIVED":"DEAD");}

60B