#include <bits/stdc++.h>
using namespace std;
vector<pair<double,double>> v;
int main()
{
std::ios::sync_with_stdio(false);
for(int i=0;i<20;i++)
{
for(int j=0;j<21;j++)
{
for(int k=0;k<20;k++)
{
for(int z=0;z<21;z++)
{
int x1=i,y1=j,x2=k,y2=z;
if(((x1-x2)!=0))
{
double a=(double)(y2-y1)/(x2-x1);
double b=(double)y1-a*x1;
v.push_back({a,b});
}
}
}
}
}
int ans=1;
sort(v.begin(),v.end());
for(int i=1;i<v.size();i++)
{
if(fabs(v[i].first-v[i-1].first)>1e-8||fabs(v[i].second-v[i-1].second)>1e-8)
ans++;
}
ans+=20;
cout<<ans;
return 0;
}
第十二届蓝桥杯省赛C_C++ 直线
最新推荐文章于 2024-09-21 12:14:27 发布
本文档展示了使用C++编程实现的一个算法,通过计算二维平面上不同点之间的斜率变化,对这些点进行排序并统计相邻斜率差异大于阈值的点的数量。核心部分是利用四元组(a, b)表示每个点的斜率及其坐标,然后对这个有序向量进行遍历计数。
摘要由CSDN通过智能技术生成