zoukankan      html  css  js  c++  java
  • Reflect

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





    白痴互质求法:
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include <string>
    #include <queue>
    #include <string.h>
    #include <map>
    #include <set>
    #include <vector>
    #include <algorithm>
    #include <stdlib.h>
    using namespace std;
    #define eps 1e-8
    #define INF 20000000005
    #define rd(x) scanf("%d",&x)
    #define rdLL(x) scanf("%I64d",&x)
    #define rd2(x,y) scanf("%d%d",&x,&y)
    #define ll long long
    #define mod 998244353
    #define maxn 100005
    #define maxm 1000
    #define minn 0.00000001;
    
    bool judge(int a,int b){
       int temp=0;
        while(b!=0){
            temp=b;
            b=a%b;
            a=temp;
        }
        if(a==1) return 1;//如果最大公约数是1,那么两数互质
        else return 0;
    }
    
    int main()
    {
        int Case,n;
        rd(Case);
        while(Case--){
            rd(n);
            int coun = 1;
            for(int i=2 ; i<n+1 ; i++)
                if( judge(i,n+1) )
                    coun++;
            printf("%d
    ",coun);
        }
        return 0;
    }
    




    欧拉函数:(两种方式)
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    #include <iostream>
    #include <stdio.h>
    #include <math.h>
    #include <string>
    #include <queue>
    #include <string.h>
    #include <map>
    #include <set>
    #include <vector>
    #include <algorithm>
    #include <stdlib.h>
    using namespace std;
    #define eps 1e-8
    #define INF 20000000005
    #define rd(x) scanf("%d",&x)
    #define rdLL(x) scanf("%I64d",&x)
    #define rd2(x,y) scanf("%d%d",&x,&y)
    #define ll long long
    #define mod 998244353
    #define MAX 1000005
    #define maxm 1000
    #define minn 0.00000001;
    
    ///但个数的的欧拉函数
    //long long eular(long long n){
    //  long long ans = n;
    //  for(int i=2 ; i*i <= n ; i++){
    //     if(n%i == 0){
    //        ans = ans - ans/i;  ///欧拉函数
    //        while(n%i == 0)
    //            n = n/i;
    //     }
    //  }
    //  if( n>1 ) ans=ans-ans/n;
    //  return ans;
    //}
    
    ///筛法欧拉函数(打表)
    int eular [MAX];
    void getEular(){
       memset(eular,0,sizeof(eular));
       eular[1] = 1;
       for(int i=2;i<=MAX;i++){
        if(!eular[i])
          for(int j=i;j<=MAX ; j += i){
            if(!eular[j]) eular[j] = j;
            eular[j] = eular[j]/i*(i-1);
          }
       }
    }
    
    int main()
    {
        int Case,n;
        getEular();
        rd(Case);
        while(Case--){
            rd(n);
            printf("%d
    ",eular[n+1]);
            //printf("%lld
    ",eular(n+1));
        }
        return 0;
    }
    



  • 相关阅读:
    JS 提交表单
    [ZJOI 2010]base 基站选址
    [ZJOI 2013]丽洁体
    [Codeforces 176B]Word Cut
    [SDOI 2013]方程
    [AtCoder agc021D]Reversed LCS
    [BZOJ 4361]isn
    [SDOI 2011]黑白棋
    [ZJOI 2010]Perm 排列计数
    [Codeforces 297E]Mystic Carvings
  • 原文地址:https://www.cnblogs.com/zswbky/p/5431922.html
Copyright © 2011-2022 走看看