問題はこちら
No.99 ジャンピング駒 - yukicoder
よく考えると、初期位置が偶数の駒は偶数座標に、奇数の駒は奇数座標にしか動けない
ジャンプするには差が1であることが必要なので、消える2つの駒の座標は必ず偶数と奇数がセットになっている
逆に偶数座標の駒と奇数座標の駒があれば、移動により隣接できジャンプすることができるので
初期位置の偶奇の駒の差が最終的に残る駒の数になる
int main() int s=0,a,b,i,n; scanf("%d",&n) while(n--){ scanf("%d",&a); s+=a%2?1:-1; } printf("%d",abs(s)); return 0; }
圧縮して
s,a; main(b){ for(gets(&a);~scanf("%d",&a);)s+=a%2*2-1; s=!printf("%d",abs(s)); }
nの読み込みをいい感じにごまかして完成
s,b; main(a){ for(;~scanf("%d",&a);b=1)s+=a&1?b:-b; s=!printf("%d",abs(s)); }
73B
2016/10/16追記
a&1は1になるんだからa&1?:-bという感じに真ん中を省略したい
これはa&1をa&bに変えれば達成できる
s,b; main(a){ for(;~scanf("%d",&a);b=1)s+=a&b?:-b; s=!printf("%d",abs(s)); }
72B