CF630M题解
思路
这一题可以将题目的意思简化一下:
要把一张歪掉的照片通过旋转扶正。
很明显,可以对旋转角度进行分类,分情况讨论。
- $<45$ 直接 $\mod4$ 就可以了 $(180 \equiv 0 \pmod {45})$。
- $>45$ $+1$ 之后再除以 $4$。
- $=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; }