题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286

找新朋友

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 10969    Accepted Submission(s): 5818

Problem Description
新年快到了,“猪头帮协会”准备搞一个聚会,已经知道现有会员N人,把会员从1到N编号,其中会长的号码是N号,凡是和会长是老朋友的,那么该会员的号码肯定和N有大于1的公约数,否则都是新朋友,现在会长想知道究竟有几个新朋友?请你编程序帮会长计算出来。
 
Input
第一行是测试数据的组数CN(Case number,1<CN<10000),接着有CN行正整数N(1<n<32768),表示会员人数。
 
Output
对于每一个N,输出一行新朋友的人数,这样共有CN行输出。
 
Sample Input
2
25608
24027
 
Sample Output
7680 16016

题解:求1~n-1中和n互质的数的个数,其实就是求n 的欧拉函数,可以直接带入公式F(n) = n*(1-1/p1)*(1-1/p2)……*(1-1/pk)    (pi是n 质因数分解的每个质因数)

 //欧拉函数
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = ;
int ans[N];
bool pri[N];
void init()
{
for(int i = ; i < N; i++) ans[i] = i;
pri[] = pri[] = ;
for(int i = ; i < N; i++){
if(!pri[i]){
ans[i]=i-;
for(int j = i+i; j < N; j+=i){
pri[j] = ;
ans[j] = ans[j]/i*(i-);
}
}
}
return;
}
int main()
{
int T;
scanf("%d",&T);
init();
while(T--)
{
int n;
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return ;
} /* //求欧拉函数
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 33000;
int mp[N][50];
int cnt[N];
bool pri[N];
void init()
{
memset(cnt,0,sizeof(cnt));
memset(mp,0,sizeof(mp));
pri[0] = pri[1] = 1;
for(int i = 2; i < N; i++)
{
if(!pri[i]){
mp[i][0] = i;
cnt[i] = 1;
for(int j = i+i; j < N; j+=i){
pri[j] = 1;
mp[j][cnt[j]++] = i;
}
}
}
}
int main()
{
int T;
scanf("%d",&T);
init();
while(T--)
{
int n;
scanf("%d",&n);
int ans = n;
for(int i = 0; i < cnt[n]; i++){
ans = ans/mp[n][i]*(mp[n][i]-1);
}
printf("%d\n",ans);
}
return 0;
}
*/

hdu_1286找新朋友(欧拉定理)的更多相关文章

  1. hduoj 1286 找新朋友

    http://acm.hdu.edu.cn/showproblem.php?pid=1286 找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...

  2. hdu 1286:找新朋友(数论,欧拉函数)

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

  3. hdoj 1286 找新朋友【欧拉函数】

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

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

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

  5. hdoj 1286 找新朋友 【数论之欧拉函数】

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

  6. 【HDOJ 1286】找新朋友

    找新朋友 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  7. 欧拉函数之HDU1286找新朋友

    找新朋友 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submissi ...

  8. hdu 1286 找新朋友 欧拉函数模版题

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

  9. hdu1286 找新朋友

    找新朋友 http://acm.hdu.edu.cn/showproblem.php?pid=1286 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

随机推荐

  1. MySQL 如何执行关联查询

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/51 当前mysql执行的策略很简单:mysql对任何关联都执行嵌 ...

  2. postgresql 导出函数的方法

    先放一条mysql的导出语句 /usr/bin/mysqldump -h127.30.100.33 -P3388 -uname -ppassword --databases databasename ...

  3. su和sudo命令的区别

    一. 使用 su 命令临时切换用户身份 参考 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,bein ...

  4. ELK日志检索并邮件微信通知

    简介 脚本为通过api检索日志内容,并通过邮件或者微信发送出来. 脚本 index检索脚本 #!/usr/bin/env python # coding:utf-8 from elasticsearc ...

  5. java 快速排序

    快速排序比插入排序快了两个数量级 package test.sort; public class Paixu { public static void main(String[] args) { // ...

  6. 面向对象 初级版 (Preview) 未完

    概述: 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数里,日后使用无需重复编写,直接调用韩顺即可. 面向对象: 对函数进行分类和封装,让开发'更快更强' 面向对象和面向过程的通 ...

  7. Java笔记:字符串详解

    字符串详解 更新时间:2018-1-6 21:20:39 String 字符串创建 String str1="ABC";//推荐使用 String str2 = new Strin ...

  8. js设置元素class方法小结及classList相关

        给DOM元素设置class是我们在项目中非常容易遇到的,网上的资料和总结也比较多,下面比较全面的整理一下,希望给到大家一些帮助!并引用两种成熟的classList的兼容方法 一.el.setA ...

  9. SQL语言的分类

    本文转自https://www.cnblogs.com/fjfzhkb/archive/2007/10/18/929108.html SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, ...

  10. 【python3之文件操作】

    一.文件操作 1.文件处理的流程 1)打开文件,得到文件句柄并赋值给一个变量 2)通过句柄对文件进行操作 3)关闭文件 例如: f = open('chenli.txt') #打开文件 first_l ...