メモ

yukicoderでゆるふわgolf

yukicoder No.49 算数の宿題

問題はこちら
No.49 算数の宿題 - yukicoder

数→記号→数→記号→数→…
と順番に読み込みつつ、前から計算していけば良い

int main(){
	int a,s,p;
	scanf("%d",&s);
	while(p=getchar()-10){
	//改行が来るまで読み込み
		scanf("%d",&a);
		if(p=='+'-10)s*=a;else s+=a;
	}
	printf("%d",s);
	return 0;
}

読み込みは全部1回にまとめたい
すると
数と記号の読み込み→計算→…
という順序になるので、計算の際には1つ前の記号を使うことになる
また+と*の区別には2での剰余を見れば十分なので、これを利用して初期値をうまく与える

a,s,q;
main(p){
	for(;~scanf("%d%c",&a,&p);q=p)s=q%2?s*a:s+a;
	//1回目ではqが1なのでs=s+aが実行され、sにaの値が入る
	a=!printf("%d",s);
}

77B