BZOJ2818 Gcd
2016-01-24 20:29
281 查看
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2818
数对(x,y)有多少对.
懒得写题解就看黄学长的吧:http://hzwer.com/3466.html
这题不难
View Code
Description
给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对.
Input
一个整数NOutput
如题懒得写题解就看黄学长的吧:http://hzwer.com/3466.html
这题不难
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> #define rep(i,l,r) for(int i=l; i<=r; i++) #define clr(x,y) memset(x,y,sizeof(x)) using namespace std; typedef long long ll; const int maxn = 10000010; int n,cnt=0,pri[maxn],phi[maxn]; ll sum[maxn]; bool flag[maxn]; void get_phi(){ clr(flag,0); phi[1] = 1; rep(i,2,n){ if (!flag[i]) pri[++cnt] = i, phi[i] = i - 1; for(int j = 1; j <= cnt && i*pri[j] <= n; j++){ flag[i*pri[j]] = 1; if (i % pri[j]) phi[i*pri[j]] = phi[i] * (pri[j] - 1); else{ phi[i*pri[j]] = phi[i] * pri[j]; break; } } } sum[1] = phi[1]; rep(i,2,n) sum[i] = sum[i-1] + phi[i]; } int main(){ scanf("%d",&n); get_phi(); ll ans = 0; rep(i,1,cnt) ans += (sum[n/pri[i]] << 1) - 1; printf("%lld\n",ans); return 0; }
View Code
相关文章推荐
- [Struts 2系列] Struts 2入门之HelloWorld
- ExpandableListView
- 在Linux上编译TCMalloc
- Android 开发环境搭建
- 数据结构与算法知识大纲
- UITableView练习一
- 51nod 1640 天气晴朗的魔法 prime队列+最小生成树+最大生成树+邻接表
- 【NOI2001】炮兵阵地
- Android开发之按键、触摸屏和手势输入专业压力測试方法
- HTML笔记五,HTML5的多媒体支持
- [转]C# 指针之美
- python
- 计算机科学技术基础知识之标准化和知识产权基础知识
- hdu 1030 Delta-wave(数学题+找规律)
- HDOJ 5071 Chat 模拟
- lasso的今世前身
- Linux下解压缩命令
- POJ 2251 - Dungeon Master
- 计算机科学技术基础知识之多媒体知识
- 解题报告:Spell checker 模拟/string