唉!
暴力解法不推荐(写了好久,还在草稿纸上打了半小时草稿)
但是想不出其他好方法了
还有一种方法想了想,被打断了(2*x-1)*2+2((x-1)-1)+(2*y-1)*2+2*((y-1)-1)
感觉可以做出来,但是思路没了
你们加油
还剩28天左右
#include<stdio.h>
#include<math.h>
int main(){
int x,y,x1=0,y1=0,i,j,n=0,n1=0;
scanf("%d%d",&x,&y);
x1=abs(x);
y1=abs(y);
//顶点
if(x<0&&y==0){
for(i=2;i<=2*x1-1;i++){
n=(x1-1)+(2*x1-1);
n1+=2*(2*x1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x==0&&y<0){
for(i=1;i<=2*y1-1;i++){
n=y1+4*y1;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x>0&&y==0){
for(i=1;i<=2*x-1;i++){
n=x+2*x;
n1+=2*(2*x-i);
}
printf("%d",n+n1);
return 0;
}
else if(x==0&&y>0){
for(i=1;i<=2*y-1;i++){
n=y1;
n1+=2*(2*y-i);
}
printf("%d",n+n1);
return 0;
}
// 第二象限
else if(x<0&&y>0){
if(x1>y1){
for(i=2;i<=2*x1-1;i++){
n=y+(x1-1)+(2*x1-1);
n1+=2*(2*x1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x1<y1){
for(i=1;i<=2*y1-1;i++){
n=y-x1;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x1==y1){
for(i=1;i<=2*y-1;i++){
n=0;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
}
// 第三象限
else if(x<0&&y<0){
if(x1>y1){
for(i=2;i<=2*x1-1;i++){
n=(x1-1-y1)+(2*x-1);
n1+=2*(2*x1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x1<y1||x1==y1){
for(i=1;i<=2*y1-1;i++){
n=x1+y1+4*x1;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
}
// 第四象限
else if(x>0&&y<0){
if(x1>y1){
for(i=1;i<=2*x1-1;i++){
n=(2*x1-y1+2*x1);
n1+=2*(2*x1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x1<y1){
for(i=1;i<=2*y1-1;i++){
n=y1-x1+4*y1;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x1==y1){
for(i=1;i<=2*y-1;i++){
n=4*y1;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
}
// 第一象限
else if(x>0&&y>0){
if(x>y){
for(i=1;i<=2*x-1;i++){
n=x-y+2*x;
n1+=2*(2*x1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x<y){
for(i=1;i<=2*y-1;i++){
n=y+y-x;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
else if(x==y){
for(i=1;i<=2*y-1;i++){
n=2*y;
n1+=2*(2*y1-i);
}
printf("%d",n+n1);
return 0;
}
}
// 原点
else if(x==0&&y==0){
printf("0");
return 0;
}
}