Problem Description
source:https://uva.onlinejudge.org/external/114/11417.html
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:
source:https://uva.onlinejudge.org/external/114/11417.html
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
10
100
500
0
Sample Output
67
13015
442011
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
10
100
500
0
Sample Output
67
13015
442011
Solution:
#include <algorithm> #include <cstdio> #include <cmath> #include <cstring> #include <deque> #include <fstream> #include <iostream> #include <list> #include <map> #include <queue> #include <set> #include <stack> #include <string> #include <vector> #include<stdio.h> using namespace std; int gcd(int x , int y); int main() { int n,t,i,j,value; while(scanf("%d",&n)==1 &&n!=0) { value=0; for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { value+=gcd(i,j); } } printf("%d\n",value); } return 0; } int gcd(int x , int y) { int z; if(y%x==0) return(x); else z=gcd(y%x,x); return(z); }
No comments:
Post a Comment
Write your comment - Share Knowledge and Experience