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

メモ

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

yukicoder No.293 4>7の世界

問題はこちら
No.293 4>7の世界 - yukicoder

上位から見ていって、一致しなくなったところを比べれば良い

int main(){
	int p=1000000000,x,y,a,b;
	scanf("%d%d",&a,&b);
	do{
		x=a/p%10;
		y=b/p%10;
		//これでx,yにはa,bの上から何桁目かが入る
		p/=10;
	}while(x==y);
	//xとyが等しくなくなったら小さい方を出力
	if((x<y&&(x!=4&&y!=7))||(x==7&&y==4))printf("%d",b);
	else printf("%d",a);
	return 0;
}

出力の条件分岐は「x<yならb、ただし(x,y)が順不同で(4,7)のときは逆」であり、またx,yは1桁であることを利用すると、x<y^(x*y==28) と書ける。

p=1e9;x,y;main(a,b){for(scanf("%d%d",&a,&b);x==y;p/=10)y=b/p%10,x=a/p%10;x=!printf("%d",x<y^x*y==28?b:a);}

106B