题目:电竞希金斯
来源:厦门大学“网宿杯“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;
}
京公网安备 11010502036488号