失误之处在于边界判错了、、、还有通项时没加括号、
一定要仔细,特别是易错点要重点检查
码:
#include<iostream>
#include<cstdio>
using namespace std;
long long n,s1,s2,quan,x,y,ans;
int main()
{
scanf("%lld%lld%lld",&n,&s1,&s2);
quan=min(s1-1,s2-1);
quan=min(quan,n-s1);
quan=min(quan,n-s2);
int lin=n;
for(int i=1;i<=quan;i++)
{
lin--;
ans+=lin*4;
lin--;
}
x=quan+1,y=quan+1;
ans++; if(y==s1&&x==s2)
{
printf("%lld",ans);
return 0;
}
while(x+1<=n-quan)
{
x++;ans++;
if(y==s1&&x==s2)
{
printf("%lld",ans);
return 0;
}
}
while(y+1<=n-quan)
{
y++;ans++;
if(y==s1&&x==s2)
{
printf("%lld",ans);
return 0;
}
}
while(x-1>quan)
{
x--;ans++;
if(y==s1&&x==s2)
{
printf("%lld",ans);
return 0;
}
}
while(y-1>quan)
{
y--;ans++;
if(y==s1&&x==s2)
{
printf("%lld",ans);
return 0;
}
}
}