`
bcyy
  • 浏览: 1830973 次
文章分类
社区版块
存档分类
最新评论

Timus 1139. City Blocks 题解

 
阅读更多

The blocks in the city of Fishburg are of square form.Navenues running south to north andMstreets running east to west bound them. A helicopter took off in the most southwestern crossroads and flew along the straight line to the most northeastern crossroads. How many blocks did it fly above?
Note.A block is a square of minimum area (without its borders).

Input

The input containsNandMseparated by one or more spaces. 1 <N,M< 32000.

Output

The number of blocks the helicopter flew above.

Samples

input output
4 3
4
3 3
2

Hint

The figures for samples:
Problem illustration

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;
}




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics