2017西安交大ACM小学期数论 [阅兵式]
阅兵式
发布时间: 2017年6月25日 12:53 最后更新: 2017年7月3日 09:27 时间限制: 1000ms 内存限制: 128M
阅兵式上,将士们排成一个整齐的方阵,每个将士面朝前方。问正中心的将士能向前看到几个将士?注意,一条直线上的将士会产生遮挡关系。
多组输入数据(不超过10000组)。
每组数据一行一个正整数n,表示方阵的大小。
数据满足n≤106,n为奇数。
每组数据输出一行一个正整数,表示答案。
5
7
题解:由于这个具有很强的对称性,所以我们只看一个三角形区域就可以了,把三角形区域的结果乘以4然后减去1就得到了总的答案。
三角形区域部分斜率的 种数计算方法如下:
横坐标为1时候,纵坐标为1:1种
横坐标为2时候,纵坐标为1:1种
横坐标为3时候,纵坐标为1、2:2种
横坐标为4时候,纵坐标为1、3:2种
我们可以知道横坐标为x的时候,共有phi(x)种。其中phi是欧拉函数
这样的话,只需要对欧拉函数求一个前缀和,就可以统计出三角形区域的斜率种数了!
代码:
#include <stdio.h>
#define MAXN 1000007
int minFactor[MAXN], phi[MAXN];
int prime[MAXN], primeNum;
long long sum[MAXN];
void calPhi()
{phi[1] = 1;for (int i = 2; i < MAXN; i++){if (!minFactor[i]){prime[primeNum++] = i;minFactor[i] = primeNum;phi[i] = i - 1;}for (int j = 1;; j++){int t = i * prime[j - 1];if (t >= MAXN)break;minFactor[t] = j;if (j == minFactor[i]){phi[t] = phi[i] * prime[j - 1];break;}phi[t] = phi[i] * (prime[j - 1] - 1);}}
}
int main(){calPhi();int n;sum[1] = 1;for(int i = 2;i < MAXN;i++){sum[i] = sum[i-1] + phi[i];}while(~scanf("%d",&n)){if(n == 1){puts("0");continue;}int t = n/2;long long res = sum[t];//求 一个三角形 printf("%lld\n",4*res-1);}return 0;
}
2017西安交大ACM小学期数论 [阅兵式]相关推荐
- 2017西安交大ACM小学期数论 [水题]
水题 发布时间: 2017年6月25日 14:06 最后更新: 2017年7月3日 09:27 时间限制: 1000ms 内存限制: 128M 描述 平均因数个数的统计对于估算数论题目复杂 ...
- 2017西安交大ACM小学期数论 [更新学号]
发布时间: 2017年6月24日 20:27 最后更新: 2017年7月3日 09:27 时间限制: 3000ms 内存限制: 128M 描述 某知名高校有n个学生,每个学生有一个唯一ID ...
- 2017西安交大ACM小学期数论 [等差数列]
等差数列 发布时间: 2017年6月25日 13:42 最后更新: 2017年7月3日 09:27 时间限制: 1000ms 内存限制: 128M 描述 给定正整数n,试问存在多少个和为n ...
- 2017西安交大ACM小学期数论 [完全平方数]
完全平方数 发布时间: 2017年6月24日 17:01 最后更新: 2017年7月3日 09:27 时间限制: 1000ms 内存限制: 128M 描述 给定正整数b,求最大的整数a,使 ...
- 2017西安交大ACM小学期 敏感词汇[AC自动机]
敏感词汇 发布时间: 2017年7月5日 00:23 最后更新: 2017年7月6日 14:40 时间限制: 1500ms 内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...
- 2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]
选择困难症 发布时间: 2017年7月4日 12:44 最后更新: 2017年7月4日 12:45 时间限制: 5000ms 内存限制: 128M 描述 GG有严重的选择困难症. 早上起床 ...
- 2017西安交大ACM小学期 刷墙[折半枚举+异或]
刷墙 发布时间: 2017年7月3日 12:17 最后更新: 2017年7月6日 22:29 时间限制: 3000ms 内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉 ...
- 2017西安交大ACM小学期 美妙音乐[差分KMP匹配]
美妙音乐 发布时间: 2017年7月3日 13:14 最后更新: 2017年7月5日 13:47 时间限制: 500ms 内存限制: 128M 描述 一段音乐是由若干个音符组成的,音乐中的 ...
- 2017西安交大ACM小学期 有趣异或[Trie树]
有趣异或 发布时间: 2017年7月4日 23:59 最后更新: 2017年7月5日 14:56 时间限制: 1500ms 内存限制: 512M 描述 给定n个非负整数,保证这些数两两不相 ...
最新文章
- 【推荐】一个不错的密码强度测试网站
- android x86一键安装,安卓
- python安装详细步骤mac_mac如何安装python3
- Cache总容量计算与写回法联合使用
- 通过定制控制在屏幕上显示图片
- android系统各种版本所占市场比例
- 开源项目SmartImageView的引用
- SQLyog 安装教程
- C高级第二次PTA作业
- 【转】LaTeX 符号命令大全
- Perl笔记:08、用正则表达式处理文…
- F5安全专栏 | 什么是零信任架构(ZTA)?
- Impala metrics之statestore-subscriber
- python闲鱼监控_推荐一个可玩的爬虫开源项目-闲鱼部分我已经测试过
- startx 命令详解
- 佛经小故事--《盲龟浮木》
- Miktex 安装遇到过的问题
- 线段树版子题【HDU - 1166 敌兵布阵】【HDU-1754 I Hate It】【HDU-1698 Just a Hook】【OpenJ_Bailian3439A Simple Pro】
- C++[缺省参数]的理解
- Android 设置黑白滤镜
热门文章
- python找出一个数的所有因子_python – 找到最大素因子的正确算法
- 拆分路径 java_JAVA 类文件中的路径如何拆分和替换
- 开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程
- python程序启动其他python程序,如何使用Python启动应用程序的实例?
- java swing 控件拖动_java swing中实现拖拽功能示例
- [Java基础]注解概念
- cg word List4
- wordList01
- 2019-03-4-算法-进化(罗马数字转整数)
- 2021牛客暑期多校训练营2