zoukankan      html  css  js  c++  java
  • uva 11417

    GCD
    Input: Standard Input

    Output: Standard Output

    Given the value of N, you will have to find the value of G. The definition of G is given below:

     

    Here GCD(i,j) means the greatest common divisor of integer i and integer j.

    For those who have trouble understanding summation notation, the meaning of G is given in the following code:

    G=0;

    for(i=1;i<N;i++)

    for(j=i+1;j<=N;j++)

    {

        G+=GCD(i,j);

    }

    /*Here GCD() is a function that finds the greatest common divisor of the two input numbers*/

    Input

    The input file contains at most 100 lines of inputs. Each line contains an integer N (1<N<501). The meaning of N is given in the problem statement. Input is terminated by a line containing a single zero.  This zero should not be processed.

    Output

    For each line of input produce one line of output. This line contains the value of G for corresponding N.

    Sample Input                              Output for Sample Input

    10

    100

    500

    0

     

    67

    13015

    442011


    Problemsetter: Shahriar Manzoor

    Special Thanks: Syed Monowar Hossain

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<cstring>
     4 #include<cstdlib>
     5 using namespace std;
     6 const int maxn = 503;
     7 
     8 int G[maxn];
     9 int opl[maxn];
    10 void init()
    11 {
    12     int i,j;
    13     memset(G,0,sizeof(G));
    14     for(i=2;i<maxn;i++) opl[i] = i;
    15     for(i=2;i<maxn;i++)
    16     {
    17         if(opl[i]==i)
    18         {
    19             for(j=i;j<maxn;j=j+i)
    20                 opl[j] = opl[j]/i*(i-1);
    21         }
    22         for(j=1;i*j<maxn;j++)/**opl [ i  ] 此时已经算出**/
    23             G[j*i] = G[j*i] + opl[i]*j;
    24     }
    25     for(i=3;i<maxn;i++)
    26         G[i] +=G[i-1];
    27 }
    28 int main()
    29 {
    30     int n;
    31     init();
    32     while(scanf("%d",&n)>0)
    33     {
    34         if(n==0)break;
    35         printf("%d
    ",G[n]);
    36     }
    37     return 0;
    38 }
  • 相关阅读:
    DevOps中的测试实践
    jenkins node js插件使用
    jenkins job执行shell时发现node版本跟实际不一致
    ES大批量写入提高性能的策略
    tomcat参数调优
    mongodb常用查询语法
    千锤百炼软工12.17日自评一篇
    千锤百炼软工12.05-12.12
    千锤百炼软工11.28-12.04
    千锤百炼软工11.20-11.27
  • 原文地址:https://www.cnblogs.com/tom987690183/p/3862795.html
Copyright © 2011-2022 走看看