• Bzoj-2705 Longge的问题 欧拉函数


      题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2705

      题意: 求 sigma(gcd(i,n), 1<=i<=n<2^32)

      只有一组数据,很好搞,答案就是sigma(phi(n/d)),直接搜就行了。

     1 //STATUS:C++_AC_8MS_11284KB
     2 #include <functional>
     3 #include <algorithm>
     4 #include <iostream>
     5 //#include <ext/rope>
     6 #include <fstream>
     7 #include <sstream>
     8 #include <iomanip>
     9 #include <numeric>
    10 #include <cstring>
    11 #include <cassert>
    12 #include <cstdio>
    13 #include <string>
    14 #include <vector>
    15 #include <bitset>
    16 #include <queue>
    17 #include <stack>
    18 #include <cmath>
    19 #include <ctime>
    20 #include <list>
    21 #include <set>
    22 //#include <map>
    23 using namespace std;
    24 //#pragma comment(linker,"/STACK:102400000,102400000")
    25 //using namespace __gnu_cxx;
    26 //define
    27 #define pii pair<int,int>
    28 #define mem(a,b) memset(a,b,sizeof(a))
    29 #define lson l,mid,rt<<1
    30 #define rson mid+1,r,rt<<1|1
    31 #define PI acos(-1.0)
    32 //typedef
    33 typedef long long LL;
    34 typedef unsigned long long ULL;
    35 //const
    36 const int N=110;
    37 const int INF=0x3f3f3f3f;
    38 const int MOD=100000,STA=8000010;
    39 const LL LNF=1LL<<60;
    40 const double EPS=1e-8;
    41 const double OO=1e15;
    42 const int dx[4]={-1,0,1,0};
    43 const int dy[4]={0,1,0,-1};
    44 const int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    45 //Daily Use ...
    46 inline int sign(double x){return (x>EPS)-(x<-EPS);}
    47 template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
    48 template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
    49 template<class T> inline T lcm(T a,T b,T d){return a/d*b;}
    50 template<class T> inline T Min(T a,T b){return a<b?a:b;}
    51 template<class T> inline T Max(T a,T b){return a>b?a:b;}
    52 template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);}
    53 template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);}
    54 template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));}
    55 template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));}
    56 //End
    57  
    58 LL p[N][2];
    59 LL ans,n,cnt;
    60  
    61 void dfs(LL d,LL phi)
    62 {
    63     if(d==cnt){
    64         ans+=phi;
    65         return ;
    66     }
    67     dfs(d+1,phi);
    68     phi=phi/p[d][0]*(p[d][0]-1);
    69     for(int i=1;i<=p[d][1];i++)
    70         dfs(d+1,phi);
    71 }
    72  
    73 int main(){
    74  //   freopen("in.txt","r",stdin);
    75     int i,j,la;
    76     LL t;
    77     scanf("%lld",&n);
    78     cnt=0;
    79     for(t=n,i=2;i*i<=t;i++){
    80         if(t%i==0){
    81             p[cnt][0]=i;
    82             while(t%i==0){
    83                 p[cnt][1]++;
    84                 t/=i;
    85             }
    86             cnt++;
    87         }
    88     }
    89     if(t)p[cnt][0]=t,p[cnt][1]=1,cnt++;
    90  
    91     ans=0;
    92     dfs(0,n);
    93  
    94     printf("%lld
    ",ans);
    95     return 0;
    96 }
  • 相关阅读:
    bzoj 4897 天赋 有向图的矩阵数定理
    bzoj 4621 Tc605 思想+dp
    bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥
    bzoj 4455 [Zjoi2016]小星星 树形dp&容斥
    获取Android设备无线和以太网MAC地址
    Java WebSocket库:https://github.com/TooTallNate/Java-WebSocket
    UsbManager, UsbDevice的简单示例
    Android开发之开机自动启动应用
    使用Microsoft Office 2007将文档转换为PDF
    C/C++实现删除字符串的首尾空格
  • 原文地址:https://www.cnblogs.com/zhsl/p/3281777.html
Copyright © 2020-2023  润新知