关于scanf的%1d
查看原帖
关于scanf的%1d
320697
AMIRIOX無暝楼主2022/5/19 20:45

rt,本题用%1d读入莫名挂了(WA, 40pts),用cin输入字符再转int就AC了,这两个有啥区别吗...(老年退役oier不记得了(

虽然听过%1d会比字符读入再转int慢很多,但我TLE也不应该WA啊...

(注意是%1d不是%ld,一位一位数字读入那个)

Code

#include <iostream>
#include <cstdio>
using namespace std;
const int manx=5e6+10;
int f[manx*2],n,m;
int l,r;
int main() {
	ios :: sync_with_stdio(false);
	cin >> n >> m;
	l=1; r=n;
	char x;
	for(int i=1;i<=n;i++) {
		// scanf("%1d", &f[i]); 这样输入就WA
		cin >> x; f[i]=x-'0';
	}
	for(int i=1;i<=m;i++) {
		char x;
		// scanf("%1c", &x); 这样输入就WA
		cin >> x;
		if(x=='+') f[r]++;
		if(x=='-') f[r]--;
		if(x=='/') f[r-1]+=f[r]>>1, r--; 
		if(x=='*') f[++r]=0;
	}
	for(int i=r;i>1;i--) {
		f[i-1]+=f[i]>>1; 
		f[i]=f[i]&1;    
	}
	for(int i=1;i<=r;i++) {
		printf("%d", f[i]);
	}
	puts("");
	return 0;
}
2022/5/19 20:45
加载中...