• BZOJ2190 SDOI2008 仪仗队 gcd,欧拉函数


    题意:求从左下角能看到的元素个数

    引理:对点(x,y),连线(0,0)-(x,y),元素个数为gcd(x,y)-1(中间元素)

    即要求gcd(x,y)=1

    求gcd(x,y)=1的个数

    转化为2 sum_(i=1)^(n-1) phi(i) - 1 (思考如何转化)

    感性分析,理性计算

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 int n,phi[100005];
     5 
     6 int main(){
     7     cin>>n;
     8     phi[1]=1;
     9     for(int i=2;i<=n;i++) phi[i]=i;
    10     for(int i=2;i<=n;i++) 
    11         if(phi[i]==i)
    12             for(int j=i;j<=n;j+=i) 
    13                 phi[j]=phi[j]/i*(i-1);
    14     long long ans=0;
    15     for(int i=1;i<n;i++) ans+=phi[i];
    16     if(n==1) cout<<0;
    17     else cout<<2*ans+1<<endl;
    18     return 0;
    19 }
  • 相关阅读:
    webNav
    keyBoardValue
    认证,权限,频率
    路由组件与视图集中附加action的声明
    视图组件
    请求与响应
    DRF序列化组件
    DRF入门及安装
    后台管理
    auth认证模块
  • 原文地址:https://www.cnblogs.com/mollnn/p/8439670.html
Copyright © 2020-2023  润新知