HDU 5430 Reflect

来源:互联网 发布:azw3 打开软件 编辑:程序博客网 时间:2024/06/16 03:15

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

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


 

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

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

Output
For each case, output the answer.
 

Sample Input
14
 

Sample Output
4


若入射角为a,则圆心角为2a,由于刚好回到原点,则2a*(N+1)必须为2kπ,其中k可以为任意整数,不难发现,只要a和N+1是互质数即可满足要求,判断是否是互质数我们可以求他们的公约数,如果求不出公约数的话,那就说明它们互质了。代码如下:

#include<iostream>using namespace std;int fun(int i,int n){int temp;while(i!=0&&i!=1){temp=n%i;n=i;i=temp;}return i;}int main(){int T;cin>>T;while(T--){int n;cin>>n;int cnt=0;for(int i=1;i<=n;i++){if(fun(i,n+1)){//cout<<"yes";cnt++;}//else cout<<"no";}cout<<cnt<<endl;}return 0;}


0 0