Skip to content

Instantly share code, notes, and snippets.

@tachalorah
Last active September 19, 2025 09:43
Show Gist options
  • Select an option

  • Save tachalorah/a1429c89145fb3c3757501de0a4ab682 to your computer and use it in GitHub Desktop.

Select an option

Save tachalorah/a1429c89145fb3c3757501de0a4ab682 to your computer and use it in GitHub Desktop.
"Olympia" - wecode, UIT

Đề: "Cho 4 số nguyên dương phân biệt, trong đó tổng của 2 số bất kỳ sẽ chia hết cho a, và tổng 3 số bất kỳ sẽ chia hết cho b. Tính tổng nhỏ nhất của 4 số đó."

Hàm lcm() các bạn có thể tự biên chế hoặc dùng hàng có sẵn trong header <numeric>.

unsigned int
minsum(unsigned int a, unsigned int b)
{
	unsigned int k = 1;
	while ((2 * k) % a != 0 || (3 * k) % b != 0)
		k++;
	return (6 * lcm(a, b) + 4 * k);
}

Một bản khác không cần chạy k, hàm gcd cũng có trong header <numeric> hoặc cũng có thể tự chế:

unsigned int
minsum(unsigned int a, unsigned int b)
{
	unsigned int k = lcm((a / gcd(a, 2)),
				(b / gcd(b, 3)));
	return (6 * lcm(a, b) + 4 * k);
}

Dùng cách này sẽ nhanh hơn cách trên khá nhiều.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment