CF630M题解

思路

这一题可以将题目的意思简化一下:

要把一张歪掉的照片通过旋转扶正。

很明显,可以对旋转角度进行分类,分情况讨论。

  1. $<45$ 直接 $\mod4$ 就可以了 $(180 \equiv 0 \pmod {45})$。
  2. $>45$ $+1$ 之后再除以 $4$。
  3. $=45$ 这个要看是顺时针还是逆时针,两种情况都算一下取一个较大值即可。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    long long x,m;
    cin>>x;
    if(x==0){
        cout<<0;
        return 0;
    }
    x=(abs(x)%360)*(x/abs(x));
    if(x<0){
        x+=360;
    }
    m=abs(x)/90;
    x-=m*90;
    if(x<45){
        cout<<m%4;
    }
    if(x>45){
        cout<<(m+1)%4;
    }
    if(x==45){
        cout<<min((m+1)%4,m%4);
    }
    return 0;
    }
posted @ 2023-08-10 18:50  very_easy  阅读(6)  评论(0)    收藏  举报  来源