/**
题目: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 欧拉函数的更多相关文章

  1. FZU 1759 欧拉函数 降幂公式

    Description   Given A,B,C, You should quickly calculate the result of A^B mod C. (1<=A,C<=1000 ...

  2. poj3696 快速幂的优化+欧拉函数+gcd的优化+互质

    这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((1 ...

  3. HDU 4483 Lattice triangle(欧拉函数)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4483 题意:给出一个(n+1)*(n+1)的格子.在这个格子中存在多少个三角形? 思路:反着想,所有情 ...

  4. 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 ...

  5. 【欧拉函数】【HDU1286】 找新朋友

    找新朋友 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  6. HDU 1695 GCD(欧拉函数+容斥原理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1695 题意:x位于区间[a, b],y位于区间[c, d],求满足GCD(x, y) = k的(x, ...

  7. 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 ...

  8. 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) 值为 ...

  9. [NOI2010][bzoj2005] 能量采集 [欧拉函数+分块前缀和优化]

    题面: 传送门 思路: 稍微转化一下,可以发现,每个植物到原点连线上植物的数量,等于gcd(x,y)-1,其中xy是植物的横纵坐标 那么我们实际上就是要求2*sigma(gcd(x,y))-n*m了 ...

  10. XMU 1615 刘备闯三国之三顾茅庐(三) 【欧拉函数+快速幂+欧拉定理】

    1615: 刘备闯三国之三顾茅庐(三) Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 45  Solved: 8[Submit][Status][W ...

随机推荐

  1. scope的范围

    (一)scope=“singleton” 知识点:无论获取多少个bean,得到的总是一样的地址,singleton范围下只会创建一个bean实例 1.Bean4.java package com.in ...

  2. dwz中弹出的窗口页面如何获取前页面(点击按钮的页面)的元素???

    在页面A.jsp中点击一个按钮,使用$.pdialog.open()方法弹出b.jsp页面(对话框窗口),我要在b.jsp中选中值然后关闭窗口(b.jsp)返回值给A.jsp~ =========== ...

  3. Setting an appropriate geodatabase spatial domain

    原文地址:http://webhelp.esri.com/arcgisdesktop/9.1/body.cfm?tocVisable=1&ID=1470&TopicName=Setti ...

  4. 引用日志log4net.dll的web.config配置

    <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigu ...

  5. JavaScript的map循环、forEach循环、filter循环、reduce循环、reduceRight循环

    1.map循环 let arr=[1,2,3,4]; arr.map(function(value,key,arr){ //值,索引,数组(默认为选定数组) return item; //如果没有re ...

  6. mac上虚拟机:VMWare Fusion, VirtualBox, Parallels Desktop, CrossOver, Veertu

    作者:Louis Tong链接:https://www.zhihu.com/question/35731328/answer/66127970来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...

  7. FL2440 ubifs文件系统烧录遇到的问题——内核分区的重要性

    之前用的文件系统是initramfs的,这种文件系统是编译进内核里的,而开机之后内核是写在内存中的,所以每次掉电之后写进文件系统中的东西都会丢失.所以决定换成ubifs的文件系统.这种文件系统是跟内核 ...

  8. chromatic aberration

    https://github.com/keijiro/KinoFringe https://en.wikipedia.org/wiki/Chromatic_aberration 色差偏移 做神经病效果 ...

  9. vue-resource基本使用方法

    一.vue-resource特点 1.体积小:vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多. 2.支持主流 ...

  10. RocketMQ之连接以及连接缓存

    发现rabbitmq有一个ConnectionFactory.发现rocketmq好像没这个东西.按道理来说如果每次发送消息都新建一条连接肯定是不可能的. ps:其实之所以是有上面的疑问是因为数据库连 ...