zoukankan      html  css  js  c++  java
  • Codevs 2296 仪仗队 2008年省队选拔赛山东

    2296 仪仗队 2008年省队选拔赛山东
    时间限制: 1 s
    空间限制: 256000 KB
    题目等级 : 大师 Master
    题解
    题目描述 Description
      作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所及的学生人数来判断队伍是否整齐(如下图)。
      这里写图片描述
      现在,C君希望你告诉他队伍整齐时能看到的学生人数。
    输入描述 Input Description
      共一个数N。
    输出描述 Output Description
      共一个数,即C君应看到的学生人数。
    样例输入 Sample Input
    4
    样例输出 Sample Output
    9
    数据范围及提示 Data Size & Hint
    对于 30% 的数据,1≤N≤1000
    对于 100% 的数据,1≤N≤40000
    分类标签 Tags
    山东 省队选拔赛 2008年

    /*
    找斜率暴力n^3.
    */
    #include<iostream>
    #include<cstdio>
    #include<map>
    #define MAXN 20001
    using namespace std;
    bool g[MAXN][MAXN];
    int ans,n;
    int main()
    {
        scanf("%d",&n);
        if(n==1)
        {
            printf("0");return 0;
        }
        ans=n*n-1-2*n+4-n+2; 
        for(int i=2;i<=n;i++)
          for(int j=2;j<=n;j++)
          g[i][j]=true;
        for(int i=2;i<=n;i++)
          for(int j=2;j<i;j++)
          {
            if(g[i][j])
            {
                int xx=i-1,yy=j-1,k=i,l=j;
                while(k<=n&&l<=n)
                {
                    if(g[k+xx][l+yy]) g[k+xx][l+yy]=false,ans-=2;
                    k=k+xx,l=l+yy;
                }
            }
          }
          printf("%d",ans);
          return 0;
    }
    /*
    坐标i,j互质时合法.
    然后暴力gcd.
    n^2logn.
    */
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n,ans;
    int gcd(int a,int b)
    {
        if(!b) return a;
        return gcd(b,a%b);
    }
    void slove()
    {
        for(int i=2;i<=n-1;i++)
           for(int j=2;j<=n-1;j++)
           {
            if(gcd(i,j)==1)  ans++;
           }
    }
    int main()
    {
        scanf("%d",&n);
        if(n==1)
          {
            printf("%d",0);return 0;
          }
        ans=2*n-1;
        slove();
        printf("%d",ans);
    }
    /*
    o(n)欧拉函数.
    刚开始暴力筛出素数
    不会处理啊啊啊.
    */
    #include<iostream>
    #include<cstdio>
    #define MAXN 40001
    #define LL long long
    using namespace std;
    LL n,ans,p[MAXN];
    void euler()
    {
        p[1]=1;
        for(int i=2;i<=n;i++)
        {
            if(!p[i])
              for(int j=i;j<=n;j+=i)
                { 
                    if(!p[j]) p[j]=j;
                    p[j]=p[j]/i*(i-1);
                }
            ans+=p[i];
        }
    }
    int main()
    {
        scanf("%d",&n);
        ans=1;n--;
        euler();
        printf("%lld",ans*2+1);
        return 0;
    }
  • 相关阅读:
    动态规划-矩阵链乘法
    钢条切割问题
    代码着色
    Sublime配置C和C++编译运行环境
    Guava中集合类的简单实用
    Junit单元测试入门
    Sublime Text 快捷键
    Editplus 的配色方案
    利用Wireshark任意获取QQ好友IP实施精准定位
    linux下实现定时执行php脚本
  • 原文地址:https://www.cnblogs.com/nancheng58/p/6070753.html
Copyright © 2011-2022 走看看