尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

洛谷题单指南-进阶数论-P2158 [SDOI2008] 仪仗队

洛谷题单指南-进阶数论-P2158 [SDOI2008] 仪仗队
📅 发布时间:2026/6/18 9:32:01

原题链接:https://www.luogu.com.cn/problem/P2158

题意解读:n*n个点组成的方阵中,最左下角的点能看到多少点。

解题思路:

设左下角点的坐标是(0, 0),设从0点能看到的点是(x, y),对于看不到的点必然可以通过将(x, y)同时扩大一定倍数得到(xd, yd)

这样一来,看不到的点必然其x、y坐标的GCD不为1,能看到的点的坐标GCD为1,也就是x、y互质的点是能被看到的。

要统计方阵中一共有多少个互质的点,可以分两块来看,上三角、下三角,由于对称性,只用统计一边即可,再乘2加1,加1是因为对角线能看到1个。

对于上三角,一共有多少个点的坐标互质呢?

问题可以转化成计算从上到下每一个行互质的点数:

第1行:纵坐标n-1,横坐标1~n-1,结果就是phi(n-1)

第2行:纵坐标n-2,横坐标1~n-2,结果就是phi(n-2)

。。。

第n-1行:纵坐标1,横坐标1,结果就是phi(1)

因此,只需要用线性筛将1~n-1的phi值都预处理出来,然后加在一起即可。最后*2+1。

注意如果方阵是1*1,则一个都看不到。

100分代码:

#include <bits/stdc++.h>
using namespace std;const int N = 40005;
int primes[N], cnt, phi[N];
bool vis[N];
int n;int main()
{cin >> n;for(int i = 1; i <= n; i++) phi[i] = i;for(int i = 2; i <= n; i++){   if(!vis[i]){primes[++cnt] = i;vis[i] = true;phi[i] = i - 1;}for(int j = 1; j <= cnt; j++){if(i * primes[j] > n) break;vis[i * primes[j]] = true;if(i % primes[j] == 0){phi[i * primes[j]] = phi[i] * primes[j];break;}else{phi[i * primes[j]] = phi[i] * (primes[j] - 1);}}}int ans = 0;if(n > 1){for(int i = 1; i < n; i++) ans += phi[i];ans = ans * 2 + 1;}   cout << ans;return 0;
}

 

相关新闻

  • 2025年比较好的家用除湿机优质厂家推荐榜单
  • 2025年工业吸油吸尘器源头厂家权威推荐榜单:电瓶工业吸尘器/工业除尘设备 /工业防爆吸尘器源头厂家精选
  • [转] 封装并发任务方法

最新新闻

  • vscode-edge-devtools 设备模拟功能详解:响应式设计调试技巧
  • Loop:优雅掌控macOS窗口管理的终极解决方案
  • 洛雪音乐免费音源终极配置指南:解锁全网无损音乐的完整教程
  • 2025年终极指南:如何快速上手MATH数据集进行AI数学推理评估
  • 陶瓷厂高温软水器十大实力口碑榜,采购照着选不踩坑 - 工业品牌热点
  • Cuckoo3终极指南:如何快速搭建开源恶意软件分析沙箱

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号