MnZn 求助快读解惑
  • 板块学术版
  • 楼主封禁用户
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/9/30 01:25
  • 上次更新2023/11/4 05:20:23
查看原帖
MnZn 求助快读解惑
271784
封禁用户楼主2021/9/30 01:25

去水题时发现一个整数的读入使用 cin 读入和使用手写快读读入导致结果不同,求解 MnZn 之惑,感谢。
Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef __int128 lll;
#define endl '\n'
ll k;
string str;
ll cnt=0;
inline ll read()
{
	ll x=0,f=1;
	char ch=getchar();
	while(ch<'0' || ch>'9')
	{
		if(ch=='-')
		{
			f=-1;
		}
		ch=getchar();
	}
	while(ch>='0' && ch<='9')
	{
		x=x*10+ch-'0';
		ch=getchar();
	}
	return x*f;
}
inline void write(lll x)
{
	if(x<0)
	{
		putchar('-');
		x=-x;
	}
	if(x>9)
	{
		write(x/10);
	}
	putchar(x%10+'0');
}
lll f(ll k)
{
	char p=str[cnt++];
	switch (p)
	{
		case '0': return pow(pow(2,k),2);
		case '1': return 0;
		case '2': return f(k-1)+f(k-1)+f(k-1)+f(k-1);
	}
}	
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>k;// k=read();  k的读入改为快读,结果改变
	cin>>str;
	write(f(k));
	return 0;
}

读入数据:

2
2021010210001

使用 cin 读入导致的输出:

9

使用手写快读读入导致的输出:

一个以 17 开头的 34 位数,随机

MnZn 若脑残犯低级错误还望轻骂,感谢解惑。

2021/9/30 01:25
加载中...