4 条题解

  • 0
    @ 2023-12-9 20:41:50
    #include<iostream>
    int main()
    {
        int w,m,n;
        std::cin>>w>>m>>n;
        if(n>m)std::swap(n,m);
        int kx,ky,x=0,y=1;
        for(int i=1;i<=m;i+=1)
        {
            if(y%2==1)
            {
                x+=1;
                if(x>w)x=w,y+=1;
            }
            else
            {
                x-=1;
                if(x<1)x=1,y+=1;
            }
            if(i==n)kx=x,ky=y;
        }
        std::cout<<abs(kx-x)+abs(ky-y);
    }
    
    • 0
      @ 2023-12-3 21:14:26

      这题测试数据不完全;错的代码能AC

      #include<bits/stdc++.h>
      using namespace std;
      int w;
      
      int main(){
      	int n,m,r1,c1,r2,c2;
      	cin>>w>>n>>m;
      	r1=ceil(n*1.0/w);
      	if(r1%2==0){
      		c1=(w-n%w+1)%w;
      	}
      	else{
      		c1=(n%w==0?w:n%w);
      	}
      	r2=ceil(m*1.0/w);
      	if(r2%2==0){
      		c2=(w-m%w+1)%w;
      	}
      	else{
      		c2=(m%w==0?w:m%w);
      	}
      	//cout<<r1<<" "<<c1<<endl;
          //cout<<r2<<" "<<c2<<endl;
      	cout<<abs(r1-r2)+abs(c1-c2);
      	return 0;
      }
      
      • -2
        @ 2023-12-9 20:41:48
        #include<iostream>
        int main()
        {
            int w,m,n;
            std::cin>>w>>m>>n;
            if(n>m)std::swap(n,m);
            int kx,ky,x=0,y=1;
            for(int i=1;i<=m;i+=1)
            {
                if(y%2==1)
                {
                    x+=1;
                    if(x>w)x=w,y+=1;
                }
                else
                {
                    x-=1;
                    if(x<1)x=1,y+=1;
                }
                if(i==n)kx=x,ky=y;
            }
            std::cout<<abs(kx-x)+abs(ky-y);
        }
        
        • -4
          @ 2023-11-8 20:47:54

          数学解法,@同为数学课代表的应该能看懂吧

          (不会有人用for吧)

          #include <bits/stdc++.h>
          using namespace std;
          int main(){
              int w,m,n; cin>>w>>m>>n;
              int mx=m%w,my=ceil(m*1.0/w),
                  nx=n%w,ny=ceil(n*1.0/w);
              if(my%2==0)mx=w-mx+1;
              if(ny%2==0)nx=w-nx+1;
              cout<<abs(mx-nx)+abs(my-ny);
              return 0;}
          
          • @ 2023-12-3 21:08:41

            你这个都是错的,测试数据 6 6 12

        • 1

        信息

        ID
        544
        时间
        1000ms
        内存
        128MiB
        难度
        5
        标签
        递交数
        266
        已通过
        112
        上传者