pair去重
给定平面上 20×2120×21 个整点 (�,�)∣0≤�<20,0≤�<21,�∈�,�∈�(x,y)∣0≤x<20,0≤y<21,x∈Z,y∈Z,即横 坐标是 00 到 1919 (包含 00 和 1919) 之间的整数、纵坐标是 00 到 2020 (包含 00 和 2020) 之 间的整数的点。
请问这些点一共确定了多少条不同的直线。
#include<bits/stdc++.h> typedef long long ll; using namespace std; struct Point{ double x, y; }p[25*25];//存下每一个点 map<pair<double,double>,int> mp;//存斜率k和截距b,int判断是否重复 int main(){ int cnt = 0; for(int i = 0;i < 20;i++){ for(int j = 0;j < 21;j++){ p[cnt].x = i; p[cnt++].y = j; } } int ans = 20 + 21; for(int i = 0;i < cnt;i++){ for(int j = 0;j < cnt;j++){ //两点的直线与坐标轴平行或共点,需要先排除掉,因为不能除以0 if(p[i].x == p[j].x || p[i].y == p[j].y) continue; //斜率和截距 double k = (p[j].y - p[i].y) / (p[j].x - p[i].x); double b = (p[j].x * p[i].y - p[j].y * p[i].x) / (p[j].x - p[i].x); if(mp[{k,b}] == 0){ mp[{k,b}] = 10; ans++; } } } cout << ans << endl; return 0; } //40257
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】