# GCD of two numbers formed by n repeating x and y times

Given three positive integer n, x, y. The task is to print Greatest Common Divisor of numbers formed by n repeating x times and number formed by n repeating y times.
0 <= n, x, y <= 1000000000.

Examples:

```Input : n = 123, x = 2, y = 3.
Output : 123
Number formed are 123123 and 123123123.
Greatest Common Divisor of 123123 and
123123123 is 123.

Input : n = 4, x = 4, y = 6.
Output : 44
```

## Recommended: Please solve it on “PRACTICE ” first, before moving on to the solution.

The idea is based on Euclidean algorithm to compute GCD of two number.
Let f(n, x) be a function which gives a number n repeated x times. So, we need to find GCD(f(n, x), f(n, y)).

Let n = 123, x = 3, y = 2.
So, first number A is f(123, 3) = 123123123 and second number B is f(123, 2) = 123123. We know, GCD(A,B) = GCD(A – B, B), using this property we can substract any multiple of B, say B’ from first A as long as B’ is smaller than A.
So, A = 123123123 and B’ can be 123123000. On substracting A will became 123 and B remains same.
Therfore, A = A – B’ = f(n, x – y).
So, GCD(f(n, x), f(n, y)) = GCD(f(n, x – y), f(n, y))

We can conclude following,

`GCD(f(n, x), f(n, y)) = f(n, GCD(x, y)). `

Below is C++ implementation based on this approach:

```// C++ program to print Greatest Common Divisor
// of number formed by N repeating x times and
// y times.
#include<bits/stdc++.h>
using namespace std;

// Return the Greatest common Divisor of two numbers.
int gcd(int a, int b)
{
if (a == 0)
return b;
return gcd(b%a, a);
}

// Prints Greatest Common Divisor of number formed
// by n repeating x times and y times.
void findgcd(int n, int x, int y)
{
// Finding GCD of x and y.
int g = gcd(x,y);

// Print n, g times.
for (int i = 0; i < g; i++)
cout << n;
}

// Driven Program
int main()
{
int n = 123, x = 5, y = 2;
findgcd(n, x, y);
return 0;
}
```

Output:

```123
```

This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
3.7 Average Difficulty : 3.7/5.0
Based on 4 vote(s)