Problem D - Farey Sequence Length 2015 ACM/ICPC Greater New York Region
2016-05-18 17:41
483 查看
预处理计算for any n, 比n小且互质的数的个数。我是翻模板才发现有个Eular函数可以直接算的,难得人品爆发一回。
因为N的 farey sequence包括了N-1的farey sequence,所以可以利用前缀和,注意N=1要单独处理。
因为N的 farey sequence包括了N-1的farey sequence,所以可以利用前缀和,注意N=1要单独处理。
#include<iostream> #include<stdio.h> #include<cstdio> #include<string> #include<cmath> #include<stdlib.h> #include<algorithm> #include<string.h> #include<cstring> #include<vector> #include<queue> #include<map> using namespace std; const int maxn=10010; int P; int N; int K; vector<int>fac[maxn]; int facnum[maxn]; int sum[maxn]; void findfac(int n) { fac .push_back(1); for(int i=2;i<sqrt(n)+1;i++) { if((n%i)==0) { fac .push_back(i); if(n/i<i) { fac .push_back(n/i); } } } } int eular(int n) { int ret=1; for(int i=2;i*i<=n;i++) { if((n%i)==0) { n/=i; ret*=i-1; while(n%i==0) { n/=i; ret*=i; } } } if(n>1) ret*=n-1; return ret; } void init() { memset(facnum,0,sizeof(facnum)); memset(sum,0,sizeof(sum)); facnum[1]=2; sum[1]=2; for(int i=2;i<maxn;i++) { facnum[i]=eular(i); sum[i]=sum[i-1]+facnum[i]; } } int main() { //freopen("input.txt","r",stdin); //cout<<eular(2)<<endl; init(); scanf("%d",&P); for(int ca=0;ca<P;ca++) { scanf("%d %d",&K,&N); printf("%d %d\n",K,sum ); } //cout<<"aa"<<endl; }
相关文章推荐
- EasyUI combogrid filter 在 FireFox chrome 下搜索中文的问题解决
- Android requestWindowFeature崩溃
- 【Arduino官方教程第一辑】示例程序 4-8 串口双向调用 (握手连接)
- 关于mysql的java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F…'问题
- 115. Distinct Subsequences
- UGUI-初识
- iOS UIAlertController使用方法如何使用
- angular+ui-router+requirejs整合demo
- [解决方案]MySql提示:The server quit without updating PID file(…)失败
- UiAutomator——如何保存测试异常现场@Before @After
- iOS UITabBarController中设置字体颜色及大小
- MXE (M cross environment) Requirements
- Longest Increasing Subsequence
- 关于UIView布局的总结
- leetcode 232. Implement Queue using Stacks
- UIUITableView仿淘宝的两列式cell显示
- UE4之GamePlay
- iOS学习之—— UIDevice、NSBundle、NSLocale
- iOS 视图UIview属性介绍 以及视图层次方法
- iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)