[语言月赛202301] 一次函数
题目描述
在二维平面坐标系 x O y xOy xOy 中,一个点的位置可以由横坐标 x x x 和纵坐标 y y y 两个参数描述,其坐标记为 ( x , y ) (x,y) (x,y)。
一次函数 y = k x + b y=kx+b y=kx+b 是满足纵坐标 y y y 等于 k k k 乘以横坐标 x x x 加 b b b 的点的集合,即满足该条件的点都在该一次函数的直线上。
现在有 n n n 个点,第 i i i 个点的坐标为 ( x i , y i ) (x_i,y_i) (xi,yi)。
现在请你求出,分别有多少点,在给定的一次函数图像上。
形式化地,给出 n n n 对整数 ( x , y ) (x,y) (x,y),请你求出有多少对数满足 y = k × x + b y=k\times x+b y=k×x+b。
输入格式
输入共 n + 1 n+1 n+1 行。
输入的第一行为三个整数 n , k , b n,k,b n,k,b。
接下来 n n n 行,每行两个数 x i , y i x_i,y_i xi,yi,代表第 i i i 个点的坐标。
输出格式
输出一行一个整数,代表有多少点在给出的一次函数上(即满足 y i = k x i + b y_i = kx_i+b yi=kxi+b)。
样例 #1
样例输入 #1
5 3 0
0 0
1 3
2 7
3 9
-1 -4
样例输出 #1
3
提示说明
样例 1 解释
给出的一次函数为 y = 3 x y=3x y=3x。
点 ( 0 , 0 ) (0,0) (0,0), ( 1 , 3 ) (1,3) (1,3), ( 3 , 9 ) (3,9) (3,9) 在一次函数上,共 3 3 3 个。
数据点性质
对于
30
%
30\%
30% 的测试点,
n
=
1
n=1
n=1;
对于
100
%
100\%
100% 的测试点,
1
≤
n
≤
1
0
6
1 \le n \le 10^6
1≤n≤106,
0
≤
∣
k
∣
,
∣
b
∣
≤
1
0
5
0 \le |k|,|b| \le 10^5
0≤∣k∣,∣b∣≤105,
0
≤
∣
x
i
∣
,
∣
y
i
∣
≤
1
0
9
0 \le |x_i|,|y_i| \le 10^9
0≤∣xi∣,∣yi∣≤109。
代码内容
//#include <iostream>
//#include <algorithm>
//#include <string>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n,k,b;
cin>>n>>k>>b;
ll x,y,index=0;
while(n--)
{
cin>>x>>y;
if(y==k*x+b)
index++;
}
cout<<index<<endl;
return 0;
}