题意翻译
给出两个正整数a,b,求a!和b!的最大公约数.
输入输出样例
输入样例#1:
4 3
输出样例#1:
6
题目地址:https://www.luogu.org/problemnew/show/CF822A
个人思路:
- 一开始只想着套模板了,结果只过了两个点
- 实际上,,
- 如果a<b,则:
- 通过观察a!和b!的值,可以发现:a!与b!的最大公约数为b!的值
- 再考虑特殊情况:当时怎么办?
- 由于,所以,所以与b!的最大公约数为a!或b!
- 所以直接输出即可.
#include<cstdio>
#include<iostream>
using namespace std;
long long data[100010];//存储i!的值
inline long long jc(long long x){
long long ans=1;
long long temp=1;
while(x){
if(data[temp]!=0){
ans=data[temp];
}else{
ans*=temp;
data[temp]=ans;
}
temp++;
x--;
}
return ans;
}
int main(){
long long a,b;
cin>>a>>b;
long long temp=jc(min(a,b));
cout<<temp<<endl;
return 0;
}