BZOJ 2190: [SDOI2008]仪仗队( 欧拉函数 )
2015-07-26 10:27
323 查看
假设C君为(0, 0), 则右上方为(n - 1, n - 1).
一个点(x, y) 能被看到的前提是gcd(x, y) = 1, 所以 answer = ∑ phi(i) * 2 + 2 - 1 = ∑phi(i) * 2 + 1 ( 1 <= i < n ). +2是因为(1, 0), (0, 1) 两个点, -1是因为(1, 1)重复计算了
-------------------------------------------------------------------------
#include<bits/stdc++.h> using namespace std; const int maxn = 40009; int phi[maxn], n; void phis() { for(int i = 1; i < n; i++) phi[i] = i; for(int i = 2; i < n; i++) if(phi[i] == i) for(int j = i; j < n; j += i) phi[j] = phi[j] / i * (i - 1);} int main() { int ans = 0; cin >> n; phis(); for(int i = 1; i < n; i++) ans += phi[i]; cout << ans * 2 + 1 << "\n"; return 0;}------------------------------------------------------------------------
2190: [SDOI2008]仪仗队
Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 1716 Solved: 1087
[Submit][Status][Discuss]
Description
作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。现在,C君希望你告诉他队伍整齐时能看到的学生人数。
Input
共一个数N。Output
共一个数,即C君应看到的学生人数。Sample Input
4Sample Output
9HINT
【数据规模和约定】 对于 100% 的数据,1 ≤ N ≤ 40000Source
数论相关文章推荐
- 主程序与子程序参数传递
- 香川中文离线地图App上线
- Qt学习心得之网络编程简单的局域网聊天服务端建立
- mybatis实战教程(mybatis in action),mybatis入门到精通
- HDU4283 You Are the One 动态规划
- 虚拟机上的Ubuntu开机显示“无法应用原保存的显示器配置”
- J2EE基础EJB
- 二叉树左右旋性质不变
- Scala详解---------类
- Object-c 设置器与访问器
- cast from 'void *' to 'int' loses precision
- HDU 5312(数学推导+技巧)
- [Leetcode 143, Medium] Reorder List
- 一起talk C栗子吧(第二十四回:C语言实例--顺序查找)
- BestCoder 1st Anniversary ($) 1002.Hidden String
- 最小生成树(模板 Kruskal)
- 岩手中文离线地图App上线
- HTML--Note6--form
- 华朗新科视频摘要与检索系统-操作手册
- Android中Service(服务)详解