社区讨论

警示后人:实数输入可能没有小数点

P8972『GROI-R1』 一切都已过去参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@mhj9cnx1
此快照首次捕获于
2025/11/03 22:51
4 个月前
此快照最后确认于
2025/11/03 22:51
4 个月前
查看原帖
之前写的史:
CPP
pii Fread() {
	int x = 0; char ch = gc();
	while (!isdigit(ch)) {
		if (ch < 10) exit(0); 
		ch = gc();
	}
	int flt = -1;
	while (isdigit(ch) || ch == '.') {
		if(~flt) flt++;
		if(ch == '.') flt = 0/**/, ch = gc();
		else x = x * 10 + (ch ^ 48), ch = gc();
	}
	if(!x) return pii(514514, 1919810);
	pii ret = pii(-flt, -flt);
	while(!(x & 1)) x >>= 1, ret.x++;
	while(x % 5 == 0) x /= 5, ret.y++;
	return ret;
}
但是如果没有小数点的话 flt == -1,然后 ret = pii(-flt, -flt) 就寄了,凭空多出来一个 2255/ng
老老实实用 scanf("%lf") 吧。

回复

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

正在加载回复...