A - Bi-shoe and Phi-shoe 欧拉函数
/**
题目:A - Bi-shoe and Phi-shoe
链接:https://vjudge.net/contest/154246#problem/A
题意:每一个数都有一个得分,它的得分就是,假定这个数为n,那么<n且与n互质的数的个数就是n的得分;
注意这里<n说明不是完全求欧拉函数,当n=1的时候值为0;其他和欧拉函数求法一样。
现在给定n个数xi,对每一个数xi找一个最小的满足条件的数yi,使得yi的得分>=xi这个数。
求n个数xi对应找出来的yi的和。
思路:
第一种做法
递推求出欧拉函数数组,然后特殊处理1的值设定为0;
然后对要求的n个数排序,从小到大找一个满足条件的yi,之后的数肯定在大于等于yi的数中找。
不断将yi后移就行了。仔细想想就明白了。
第二种做法
不需要排序,预处理递推数组后,因为素数r的欧拉函数之为r-1;而两个素数之间的距离不超过log(r);
那么对每一个数xi可以从自身开始向上递增最多log(xi)就可以找到>=xi的欧拉函数;
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn = ;
///获得单个数的欧拉函数
/*
ll getEuler(ll x)
{
ll res = x;
for(int i = 2; i*i<=x; i++){
if(x%i==0){
res = res/i*(i-1);
while(x%i==0) x/=i;
}
}
if(x>1){
res = res/x*(x-1);
}
return res;
}*/
int a[];
int n, cas=;
ll euler[maxn];
///递推求一段欧拉函数,非最简版
void Eulers(ll x)
{
int mas = ;
for(int i = ; i <= x; i++) euler[i] = i;
for(int i = ; i <= x; i++) {
if(euler[i]==i){//判断素数
for(int j = i; j <= x; j+=i){
euler[j]=euler[j]/i*(i-);
}
}
}
///由于本题目要求<n的欧拉函数,不可以等于n;所以当n为1的时候,满足条件的个数为0;
///****************************实际上1的欧拉函数值为1;所以这里是一个针对本题的特例才要改为0;
euler[] = ;
}
void solve1()
{
sort(a,a+n);
int p = ;
ll ans = ;
for(int i = ; i<n; i++){
while(euler[p]<a[i]){
p++;
}
ans += p;
}
printf("Case %d: %lld Xukha\n",cas++,ans);
}
void solve2()
{
ll ans = ;
for(int i = ; i<n; i++){
for(int j = a[i]; ; j++){///两个素数之间距离最多log(n);
if(euler[j]>=a[i]){
ans += j; break;
}
}
}
printf("Case %d: %lld Xukha\n",cas++,ans);
}
int main()
{
int T;
Eulers(maxn);
cin>>T;
while(T--){
scanf("%d",&n);
for(int i = ; i<n; i++) scanf("%d",&a[i]);
//solve1();
solve2();
//printf("euler(%lld) = %lld\n",x,getEuler(x));
//printf("MAX(euler(%lld)) = %lld\n",x,Eulers(x));
}
return ;
}
A - Bi-shoe and Phi-shoe 欧拉函数的更多相关文章
- FZU 1759 欧拉函数 降幂公式
Description Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000 ...
- poj3696 快速幂的优化+欧拉函数+gcd的优化+互质
这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((1 ...
- HDU 4483 Lattice triangle(欧拉函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4483 题意:给出一个(n+1)*(n+1)的格子.在这个格子中存在多少个三角形? 思路:反着想,所有情 ...
- UVa 11426 (欧拉函数 GCD之和) GCD - Extreme (II)
题意: 求sum{gcd(i, j) | 1 ≤ i < j ≤ n} 分析: 有这样一个很有用的结论:gcd(x, n) = i的充要条件是gcd(x/i, n/i) = 1,因此满足条件的x ...
- 【欧拉函数】【HDU1286】 找新朋友
找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU 1695 GCD(欧拉函数+容斥原理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:x位于区间[a, b],y位于区间[c, d],求满足GCD(x, y) = k的(x, ...
- SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1
5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...
- uva 11426 GCD - Extreme (II) (欧拉函数打表)
题意:给一个N,和公式 求G(N). 分析:设F(N)= gcd(1,N)+gcd(2,N)+...gcd(N-1,N).则 G(N ) = G(N-1) + F(N). 设满足gcd(x,N) 值为 ...
- [NOI2010][bzoj2005] 能量采集 [欧拉函数+分块前缀和优化]
题面: 传送门 思路: 稍微转化一下,可以发现,每个植物到原点连线上植物的数量,等于gcd(x,y)-1,其中xy是植物的横纵坐标 那么我们实际上就是要求2*sigma(gcd(x,y))-n*m了 ...
- XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】
1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS Memory Limit: 128 MBSubmit: 45 Solved: 8[Submit][Status][W ...
随机推荐
- 客户端JavaScript加密数据,服务端Java解密数据
原文:http://blog.csdn.net/peterwanghao/article/details/43303807 在普通的页面提交时,如果没有使用SSL,提交的数据将使用纯文本的方式发送.如 ...
- 【mybatis】mybatis 中select 查询 select * 查询出来的数据,字段值带不出来 数据不全
原来的代码如下: <select id="findByGoodsUid" resultType="com.pisen.cloud.luna.ms.goods.bas ...
- Activiti 5.22 spring
<!-- activiti依赖 --> <dependency> <groupId>org.activiti</groupId> <artifac ...
- python的dict如何排序
Python的内置dictionary数据类型是无序的,通过key来获取对应的value.可是有时我们需要对dictionary中 的item进行排序输出,可能根据key,也可能根据value来排 # ...
- Android ViewStub的使用方法
大家写项目的时候肯定会有一些东西提前写好,可是不到一定条件是不想让它显示出来的.我们可能的做法就是让它View.GONE 或View.INVISIBLE等到一定条件了在代码里面这设置View.VISI ...
- Fedora 修改时区、日期、时间
# tzselect 修改时间命令 [root@comput1 ~]# tzselectPlease identify a location so that time zone rules can b ...
- linux 关闭端口
第一步查看那些程序在使用该端口 netstat -anp或者netstat -tulnp 第二步杀死进程 kill -9 xxx,杀死某个进程 killall 进程名
- 【Git】Git hangs while unpacking objects (Windows)
Git hangs while unpacking objects (Windows) 14 Oct 2014 I'm not sure if this is because we're behind ...
- Python Xpath 提取html整个元素(标签与内容)
提取html某标签中文字时,文字中含有:“<sub>2</sub>O<sub>5</sub>”,导致提取的文字不符合预期. 解决方法: #coding= ...
- 【重点突破】—— fetch()方法介绍
前言:ant-design-pro的技术组成主要是react+redux+dva+antd+fetch+roadhog,dva在源码包index.js里面导出了fetch,但是如果不想使用fetch库 ...