問題はこちら
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整数に読み込めば数値として処理できるな?
入力文字列を64bit整数と解釈した値をsとしてs%x%y%zの形のものを探してみる
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