Reflect

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 288    Accepted Submission(s): 174

Problem Description
We send a light from one point on a mirror material circle,it reflects N times and return the original point firstly.Your task is calcuate the number of schemes.

 
Input
First line contains a single integer T(T≤10) which denotes the number of test cases.

For each test case, there is an positive integer N(N≤106).

 
Output
For each case, output the answer.
 
Sample Input
1
4
 
Sample Output
4
 
Source

#include<bits/stdc++.h>
using namespace std;
const int M = 1e6+10 ;
int phi[M] , prime[M] ; int Euler () {
for (int i = 2 ; i < M ; i ++) {
if (!phi[i]) {
phi[i] = i-1 ;
prime[ ++prime[0] ] = i ;
}
for (int j = 1 ; j <= prime[0] && 1ll*i*prime[j] < M ; j ++) {
if (i % prime[j]) phi[i * prime[j]] = phi[i] * (prime[j]-1) ;
else {
phi[i * prime[j] ] = phi[i] * prime[j] ;
break ;
}
}
}
} int main () {
Euler () ;
int T ;
scanf ("%d" , &T) ;
int n ;
while (T --) {
scanf ("%d" , &n) ;
printf ("%d\n" , phi[n+1]) ;
}
return 0 ;
}

虽然说标签上写着欧拉,但在分析出之前,并没有什么用。

一开始我是这么想的,如果当前的点数为n。cnt = 0 ;

那么我枚举 i = 1~n/2,如果n % i == 0 ,那么当前这种情况肯定是不行的(这里i可以认为是你隔了i个点连线),其余情况,我都令cnt++

因为我想如果当前的间隔点数>n/2 , 那么相当于前一半的对称,我最后答案只要cnt*2就ok了。

个人现在仍觉得蛮对的。(但实际上wa了)

但进一步分析:

2θ * n = 2*k*pi ;

θ = k/n * pi ;

所以理论上来说只要k <= n ,都是能回到圆点的。但题目要求要“恰好”

然后我们假设存在三个正整数k,a,b,k=a+b。

那么你很容易证明若 k 与 a 互质 , 则k 必与 b互质;同样的,k 若与 a 不互质,则k 与 b必定不互质。

所以我在枚举 i = 1~n/2的过程中,若枚举到一个数x , n%x == 0 , 那么 n % (n-x) == 0 ,

而且你会发现x , 和n - x就是个对称的过程。

所以其实我在干的过程就是 寻找与n互质的数的个数 。

所以用欧拉函数完全没问题。

Reflect(欧拉函数)的更多相关文章

  1. HDU 5430:Reflect 欧拉函数

    Reflect  Accepts: 72  Submissions: 302  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 65536/ ...

  2. hdu 5279 Reflect phi 欧拉函数

    Reflect Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chi ...

  3. HDU 5430 Reflect(欧拉函数)

    题目: http://acm.hdu.edu.cn/showproblem.php?pid=5430 从镜面材质的圆上一点发出一道光线反射NNN次后首次回到起点. 问本质不同的发射的方案数. 输入描述 ...

  4. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  5. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  6. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  7. COGS2531. [HZOI 2016]函数的美 打表+欧拉函数

    题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...

  8. poj2478 Farey Sequence (欧拉函数)

    Farey Sequence 题意:给定一个数n,求在[1,n]这个范围内两两互质的数的个数.(转化为给定一个数n,比n小且与n互质的数的个数) 知识点: 欧拉函数: 普通求法: int Euler( ...

  9. 51Nod-1136 欧拉函数

    51Nod: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1136 1136 欧拉函数 基准时间限制:1 秒 空间限制: ...

随机推荐

  1. Android Studio目录结构浅析

    让我们来简单了解下Android Studio中不同目录(文件)的位置和用途.首先看下一个App的最简单的目录结构 OK,我们这么看,第一,把这么多文件先分成这么三块1. 编译系统(Gradle)2. ...

  2. POJ2318TOYS(叉积判断点与直线位置)

    题目链接 题意:一个矩形被分成了n + 1块,然后给出m个点,求每个点会落在哪一块中,输出每块的点的个数 就是判断 点与直线的位置,点在直线的逆时针方向叉积 < 0,点在直线的顺时针方向叉积 & ...

  3. IBatis分页显示

    <select id="pagedListOrderOpen"> SELECT * FROM ( </select> <sql id="pa ...

  4. yourphp基本语句

    实例化页面代码 1.时间代码:{$vo.createtime|toDate=###,'Y-m-d H:i:s'} 2.连接:{:U('Pro/arr')},{:URL()} 如:<form ac ...

  5. 修改美化Matlab字体

    修改美化Matlab字体    MATLAB作为高校理工科类本科生或研究生必不可少的科研工具已经有着很多年的历史,以至于在我们的大学生活里或科研工作中,MATLAB处处闪现着它的身影,给我们带来了不少 ...

  6. Camera

    Unity摄像机Viewport使用   http://blog.sina.com.cn/s/blog_64ab3f630100y7e7.html http://blog.sina.com.cn/s/ ...

  7. Senparc.Weixin.MP.Sample 配置redis服务器密码

    redis.windows-service.conf中加  requirepass 你的密码 <!-- Cache.Redis连接配置 --> <add key="Cach ...

  8. Session共享的解决方案

    http://www.cnblogs.com/xinhaijulan/archive/2010/08/21/1805116.html Session共享的解决方案 1.客户端SessionID值唯一: ...

  9. 彻底解决Eclipse自动补全变量名及变量名后面追加类型名

    彻底解决Eclipse自动补全变量名问题的方法步骤 发布于 2014-11-04 14:53   已被阅读 31613159 次 大家使用eclipse或者MyEclipse敲代码的时候,是不是都被这 ...

  10. Log4cpp配置文件格式说明

    Log4cpp配置文件格式说明 博客分类: log4cpp log4cpp  log4cpp有3个主要的组件:categories(类别).appenders(附加目的地).和 layouts(布局) ...