#include <cstdio>
const int L=1<<15;
char buffer[L],*S,*T;
inline char _getChar(){
if(S==T){
T=(S=buffer)+fread(buffer,1,L,stdin);
if(S==T) return EOF;
}
return *S++;
}
void out(int x)
{
if(x>9) out(x/10);
putchar(x%10+'0');
}
int main()
{
// out(111);
register int n = 0, x = 0, s = 0;
register char ch;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
n=(n<<1)+(n<<3)+(ch-'0');
ch=_getChar();
}
for(; n >= 16; n -= 16)
{
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
}
while(n--)
{
for(ch=_getChar();ch<'0'||ch>'9';ch=_getChar());
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch-'0');
ch=_getChar();
}
s ^= x;
x = 0;
}
out(s);
return 0;
}
IO部分是原最优解的封装部分
对其进行循环展开和函数展开之后快了将近50ms
另:问一下,我尝试把_getChar()也进行函数展开的时候出了点问题,为什么在进入主函数之前足足运行了4s/yiw
我是在main()的第一行printf("qwq");,但是程序运行了4秒才输出qwq
求Debug:程序