题目:电竞希金斯
来源:厦门大学“网宿杯“17届程序设计竞赛决赛(同步赛)
题目解析
题目要求:给出直线 经过的象限。 不会同时为 0。
直线不经过任何象限的两种情况:直线为 或 。
当 时,直线为 ;
当 时,直线为 ;
当 时,直线经过点和点。
C++代码
#include<iostream> using namespace std; string quadrant(int a, int b, int c){ string ans = "non"; if(a == 0){ // y = -c/b if(b * c < 0) ans = "1 2"; else if(b * c > 0) ans = "3 4"; } else if(b == 0){ // x = -c/a if(a * c < 0) ans = "1 4"; else if(a * c > 0) ans = "2 3"; } else{ if(c == 0){ // y = (-a/b)x if(a * b > 0) ans = "2 4"; else ans = "1 3"; } else{ // 经过点(0,-c/b)和点(-c/a,0) if(b*c > 0 && c*a > 0) ans = "2 3 4"; else if(b*c > 0 && c*a < 0) ans = "1 3 4"; else if(b*c < 0 && c*a > 0) ans = "1 2 3"; else ans = "1 2 4"; } } return ans; } int main(){ int a, b, c; cin >> a >> b >> c; cout << quadrant(a, b, c) << endl; return 0; }