题意:从镜面材质的圆上一点发出一道光线反射 N <script type="math/tex" id="MathJax-Element-4">N</script>次后首次回到起点。
问本质不同的发射的方案数。

题解:

为什么要k和(N+1)是最简分数呢。因为要求的是不重复的路径,也就是求的是到了出口后射出去,而不是又反射回来。30+360和30的结果是一样的,但不能算一种。。
代码一:

//author: CHC
//First Edit Time:    2015-09-05 19:38
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <algorithm>
#include <limits>
using namespace std;
typedef long long LL;
const int INF = numeric_limits<int>::max();
const LL LL_INF= numeric_limits<LL>::max();int main()
{int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);int cnt=0;for(int i=1;i<=n;i++){if(__gcd(i,n+1)==1)++cnt;}printf("%d\n",cnt);}return 0;
}

代码二:

//author: CHC
//First Edit Time:  2015-09-05 19:38
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <algorithm>
#include <limits>
using namespace std;
typedef long long LL;
const int MAXN = 1000000+1000;
const int INF = numeric_limits<int>::max();
const LL LL_INF= numeric_limits<LL>::max();
LL phi[MAXN],prime[MAXN];
void getprime(){memset(prime,0,sizeof(prime));phi[1]=1;for(int i=2;i<MAXN;i++){if(!prime[i])prime[++prime[0]]=i,phi[i]=i-1;for(LL j=1,k;j<=prime[0]&&(k=prime[j]*i)<MAXN;j++){prime[i*prime[j]]=1;if(i%prime[j]==0){phi[k]=phi[i]*prime[j];break;}phi[k]=phi[i]*(prime[j]-1);}}
}
int main()
{getprime();int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);printf("%I64d\n",phi[n+1]);}return 0;
}

hdu 5430 Reflect 求圆镜内反射N次回到出口的方法数 欧拉函数相关推荐

  1. (hdu step 7.2.1)The Euler function(欧拉函数模板题——求phi[a]到phi[b]的和)

    题目: The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...

  2. hdu 1286( 欧拉函数 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286 数学题真的是有点吃不消了... View Code 1 #include<iostream ...

  3. hdu (欧拉函数+容斥原理) GCD

    题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1695 看了别人的方法才会做 参考博客http://blog.csdn.net/shiren_Bod/ar ...

  4. HDU 1286 找新朋友 (欧拉函数)

    找新朋友 http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=2&sectionid=1&problemid=8 T ...

  5. 求互质数对的两种方法:欧拉函数和容斥原理

    1.HDU4135 首先,我们可以先求出1 ~ a - 1内与n互质的数,再求出1 ~ b内与n互质的数.最后利用前缀和算出来即可. #include <iostream> #includ ...

  6. 【数学知识】三种方法求 [1,n] 中所有数欧拉函数(线性筛欧拉函数优化至 O(n) )

    整理的算法模板合集: ACM模板 ①直接求小于或等于n,且与n互质的数个数(求[1,n]中所有数的欧拉函数时间复杂度:O(nn)O(n\sqrt{n})O(nn​)) ②求[1,n]之间每个数的质因数 ...

  7. hdu2824(2009多校第一场) 线性筛法求欧拉函数

    欧拉函数指小于n且与其互质的数个数: phin=n*(1-1/p1)*(1-1/p2)*...(1-1/pn) 由此便可以利用类似筛素数筛出所有欧拉函数,具体看代码: 1 #include<st ...

  8. hdu 4983(欧拉函数)

    题目大意:给出一组n和k,求解满足公式:gcd(n-a,n)*gcd(n-b,n)=n^k的(a,b)的对数,结果对(1e9+7)取模. 先证明:对于1<=x<=n,有gcd(n-x , ...

  9. 线性筛法 与 线性求欧拉函数 的计算模板

    简介 懂得如何快速计算质数是十分重要的 在筛法的基础上,我们可以使用更为高级的线性筛法! 顾名思义,就是时间复杂度是线性的,即 O(N)O(N) ,N 为所求的质数范围 而对编程有所接触的人,应该都知 ...

最新文章

  1. 2021牛客暑期多校训练营3 I-Kuriyama Mirai and Exclusive Or (差分+位运算)
  2. 百雀羚、林清轩、逐本走红背后,植物基护肤品的春天来了?
  3. PHP保留小数的相关方法
  4. C++判断一个数字是否为质数
  5. 体验 PHP under .NET Core
  6. php 时间选择,PHP-在学说2中的日期之间选择条目
  7. 算法(19)-leetcode-剑指offer3
  8. 贪心算法——数列极差
  9. 算法的优缺点_逻辑回归算法的优缺点
  10. 安装金山词霸2007
  11. Multi-level learning based memetic algorithm for community detection笔记
  12. 打包labview程序
  13. 最新数据:微博Q1季度数据分析报告来了!
  14. 任性与自制力差--拖延症(行为训练)
  15. 使用计算机有关的活动,有关计算机的活动策划书
  16. ks 曲线_ROC曲线与KS曲线的理解
  17. 解决Chrome插件安装时出现的“程序包无效”问题
  18. 2022年3月PMP缓退考怎么办理?附流程
  19. 同济大学2020计算机复试线,2020考研分数线 同济大学2020考研复试分数线什么时候公布...
  20. uploader什么意思_uploader

热门文章

  1. WhiteHoleV0.7界面预览
  2. 前端知识-圣杯布局、双飞翼布局
  3. DES算法原理完整版
  4. Spring Security 详解
  5. 索爱YARI U100手机
  6. 程序人生:论“名片”的重要性
  7. 每日一句_科比名言(一)
  8. matlab图像处理:一个提取缝隙的图像处理算法
  9. 用sqlserver查询数据的所有表名和行数找到餐饮管理软件菜品表名Course
  10. 如何构建更加高效、准确的对话模型:ChatGPT和大规模预训练模型