社区讨论

关于scanf的%1d

P2104二进制参与者 5已保存回复 15

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
15 条
当前快照
1 份
快照标识符
@lo8v7wyo
此快照首次捕获于
2023/10/28 01:06
2 年前
此快照最后确认于
2023/10/28 01:06
2 年前
查看原帖
rt,本题用%1d读入莫名挂了(WA, 40pts),用cin输入字符再转int就AC了,这两个有啥区别吗...(老年退役oier不记得了(
虽然听过%1d会比字符读入再转int慢很多,但我TLE也不应该WA啊...
(注意是%1d不是%ld,一位一位数字读入那个)
Code
CPP
#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;
}

回复

15 条回复,欢迎继续交流。

正在加载回复...