Input
Output
Samples
input | output |
---|---|
4 3 | 4 |
3 3 | 2 |
Hint
![Problem illustration](https://i-blog.csdnimg.cn/blog_migrate/3f81bc31e8a6fa97d1c67cb6098b9abe.png)
Reference - The blog below explaine in detail, but I seem like not quite get it that much:
http://flickeringtubelight.net/blog/2006/08/a-diagonal-through-a-rectangular-grid-of-squares/
But anyway, it's a good explanation. And it should be benefit to read it, maybe you can come up with your own way to understand this approach.
This is a problem that can be approach by many ways. I want to post it because it is very mathematics-related.
I , too, use that formula to solve it.
My suggestion is: if you really have a hard time to deduct that formula, just check the small examples, like n = 2, m = 3, and n = 5, m = 4 and so on.
Below is my C++ solution:
#include <iostream>
using namespace std;
int GCDcityBlocks(int n, int m)
{
while (m)
{
int a = n % m;
n = m;
m = a;
}
return n;
}
void CityBlocks1139()
{
int n = 0, m = 0;
cin>>n>>m;
n--, m--;
int k = GCDcityBlocks(n, m);
int ans = n/k + m/k - 1;
cout<<ans * k;
}