被套路了。。。
#include<iostream> #include<cstdio> using namespace std; int main() { int a,op,b,c; scanf("%d%d%d%d",&a,&op,&b,&c); int ans; if(c>0){ if(op==1){ if(a>=b) ans=0; else ans=(b-a)/c+1; } if(op==2){ if(a>=b) ans=-1; else ans=0; } if(op==3){ if(a>=b) ans=0; else{ if((b-a)%c!=0) ans=-1; else ans=(b-a)/c; } } } if(c==0){ if(op==1){ if(a<=b) ans=-1; else ans=0; } if(op==2){ if(a>=b) ans=-1; else ans=0; } if(op==3){ if(a!=b) ans=-1; else ans=0; } } if(c<0){ if(op==1){ if(a<=b) ans=-1; else ans=0; } if(op==2){ if(a<=b) ans=0; else ans=(b-a)/c+1; } if(op==3){ if(a<=b) ans=0; else{ if((b-a)%c!=0) ans=-1; else ans=(b-a)/c; } } } printf("%d",ans); return 0; }
从c的取值范围入手分析:正数、0、负数。(为什么我的思维这么怪异)
归根结底其实只有18种情况,不慌。
原文:https://www.cnblogs.com/dong-ji-yuan/p/9860923.html