题解:
先摆几个数据:
-----(2<<31)=2147483648;
-----sqrt(2<<31)=46341;
-----8!=40320
-----9!=362880
-----12!<(2<<31)<13!
既然木有任何思路,那我们就想枚举把.emm好吧,我想上我超级无敌沙雕的表情包了啊啊啊
继续看题。题目要求是求出最长的连续因子中最小的。那就先枚举长度,再枚举起点,假如找到了的话直接跳出双重循环就OK;
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
int n;scanf("%d",&n);
int mid=sqrt(n),dexl,dexs,fflag=0;
for(int len=12;len>=1;len--)//长度,len要从12开始(13!,因子1不计),这里不可以按mid的几的阶乘算啊啊
{
int flag=0;
for(int sta=