CodeForces - 822A I'm bored with life 【水题】

本文介绍了一个关于计算两个整数阶乘的最大公约数的问题,通过分析得出结论,最大公约数即为较小数的阶乘。文章提供了一个C语言实现的示例程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

I’m bored with life

time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Holidays have finished. Thanks to the help of the hacker Leha, Noora managed to enter the university of her dreams which is located in a town Pavlopolis. It’s well known that universities provide students with dormitory for the period of university studies. Consequently Noora had to leave Vičkopolis and move to Pavlopolis. Thus Leha was left completely alone in a quiet town Vičkopolis. He almost even fell into a depression from boredom!

Leha came up with a task for himself to relax a little. He chooses two integers A and B and then calculates the greatest common divisor of integers “A factorial” and “B factorial”. Formally the hacker wants to find out GCD(A!, B!). It’s well known that the factorial of an integer x is a product of all positive integers less than or equal to x. Thus x! = 1·2·3·…·(x - 1)·x. For example 4! = 1·2·3·4 = 24. Recall that GCD(x, y) is the largest positive integer q that divides (without a remainder) both x and y.

Leha has learned how to solve this task very effective. You are able to cope with it not worse, aren’t you?

Input
The first and single line contains two integers A and B (1 ≤ A, B ≤ 109, min(A, B) ≤ 12).

Output
Print a single integer denoting the greatest common divisor of integers A! and B!.

Example
inputCopy
4 3
outputCopy
6
Note
Consider the sample.

4! = 1·2·3·4 = 24. 3! = 1·2·3 = 6. The greatest common divisor of integers 24 and 6 is exactly 6.

问题链接:http://codeforces.com/problemset/problem/822/A。

问题简述:计算两个整数的阶乘的最大公约数。

问题分析:由于是整数的阶乘,所以最大公约数就是这两个整数中较小的那一个的阶乘。

程序说明:比较两个整数得到小的那一个数,用一个函数来计算小的那个数的阶乘。

AC通过的C语言程序如下:

#include <iostream>
#include <cmath>
using namespace std;
int i, sum;
int a(int x)
{
	sum = 1;
	for (i = 1; i <= x; i++)
	{
		sum *= i;
	}
	return sum;
}
int main()
{
	int A, B, m;
	cin >> A >> B;
	if (A >= 1 && B <= pow(10.0,9) && (A<=12||B<=12) )
	{
		if (A > B)
		{
			m = A;
			A = B;
			B = m;
		}
		cout << a(A);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值