阅兵式

发布时间: 2017年6月25日 12:53   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M

描述

阅兵式上,将士们排成一个整齐的方阵,每个将士面朝前方。问正中心的将士能向前看到几个将士?注意,一条直线上的将士会产生遮挡关系。

输入

多组输入数据(不超过10000组)。
每组数据一行一个正整数n,表示方阵的大小。
数据满足n≤106,n为奇数。

输出

每组数据输出一行一个正整数,表示答案。

样例输入1

5

样例输出1

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小学期数论 [阅兵式]相关推荐

  1. 2017西安交大ACM小学期数论 [水题]

    水题 发布时间: 2017年6月25日 14:06   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 平均因数个数的统计对于估算数论题目复杂 ...

  2. 2017西安交大ACM小学期数论 [更新学号]

    发布时间: 2017年6月24日 20:27   最后更新: 2017年7月3日 09:27   时间限制: 3000ms   内存限制: 128M 描述 某知名高校有n个学生,每个学生有一个唯一ID ...

  3. 2017西安交大ACM小学期数论 [等差数列]

    等差数列 发布时间: 2017年6月25日 13:42   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 给定正整数n,试问存在多少个和为n ...

  4. 2017西安交大ACM小学期数论 [完全平方数]

    完全平方数 发布时间: 2017年6月24日 17:01   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 给定正整数b,求最大的整数a,使 ...

  5. 2017西安交大ACM小学期 敏感词汇[AC自动机]

    敏感词汇 发布时间: 2017年7月5日 00:23   最后更新: 2017年7月6日 14:40   时间限制: 1500ms   内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...

  6. 2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

    选择困难症 发布时间: 2017年7月4日 12:44   最后更新: 2017年7月4日 12:45   时间限制: 5000ms   内存限制: 128M 描述 GG有严重的选择困难症. 早上起床 ...

  7. 2017西安交大ACM小学期 刷墙[折半枚举+异或]

    刷墙 发布时间: 2017年7月3日 12:17   最后更新: 2017年7月6日 22:29   时间限制: 3000ms   内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉 ...

  8. 2017西安交大ACM小学期 美妙音乐[差分KMP匹配]

    美妙音乐 发布时间: 2017年7月3日 13:14   最后更新: 2017年7月5日 13:47   时间限制: 500ms   内存限制: 128M 描述 一段音乐是由若干个音符组成的,音乐中的 ...

  9. 2017西安交大ACM小学期 有趣异或[Trie树]

    有趣异或 发布时间: 2017年7月4日 23:59   最后更新: 2017年7月5日 14:56   时间限制: 1500ms   内存限制: 512M 描述 给定n个非负整数,保证这些数两两不相 ...

最新文章

  1. 【推荐】一个不错的密码强度测试网站
  2. android x86一键安装,安卓
  3. python安装详细步骤mac_mac如何安装python3
  4. Cache总容量计算与写回法联合使用
  5. 通过定制控制在屏幕上显示图片
  6. android系统各种版本所占市场比例
  7. 开源项目SmartImageView的引用
  8. SQLyog 安装教程
  9. C高级第二次PTA作业
  10. 【转】LaTeX 符号命令大全
  11. Perl笔记:08、用正则表达式处理文…
  12. F5安全专栏 | 什么是零信任架构(ZTA)?
  13. Impala metrics之statestore-subscriber
  14. python闲鱼监控_推荐一个可玩的爬虫开源项目-闲鱼部分我已经测试过
  15. startx 命令详解
  16. 佛经小故事--《盲龟浮木》
  17. Miktex 安装遇到过的问题
  18. 线段树版子题【HDU - 1166 敌兵布阵】【HDU-1754 I Hate It】【HDU-1698 Just a Hook】【OpenJ_Bailian3439A Simple Pro】
  19. C++[缺省参数]的理解
  20. Android 设置黑白滤镜

热门文章

  1. python找出一个数的所有因子_python – 找到最大素因子的正确算法
  2. 拆分路径 java_JAVA 类文件中的路径如何拆分和替换
  3. 开发板实现645协议C语言,迅为-imx6ull开发板之C语言实现LED例程
  4. python程序启动其他python程序,如何使用Python启动应用程序的实例?
  5. java swing 控件拖动_java swing中实现拖拽功能示例
  6. [Java基础]注解概念
  7. cg word List4
  8. wordList01
  9. 2019-03-4-算法-进化(罗马数字转整数)
  10. 2021牛客暑期多校训练营2