题目链接
题目大意:求N的连续因子的数量和其中最小的因子序列。
#include <iostream>
#include <stdio.h>
#include<math.h>
#include<vector>
#include<limits.h>
using namespace std;
int main()
{
int N;
cin>>N;
vector<int> vt;
vector<int>tempvt;
int temp=0;
int num=INT_MIN;
int tempN=N;
//全部运行超时
for(int i=2;i<sqrt(N)+1;i++)//不加1会出现异常退出 原因越界
{
//一个运行超时,一个异常退出
if(N%i==0)
{
///判断n能否整除他的下一个
bool is=true;
int j=i;
//两个异常退出
tempN=N;
while(is)
{
if(tempN%(j)==0)
{
tempvt.push_back(j);
temp++;
tempN/=j;
}
else
{
is=false;
if(num<temp)
{
num=temp;
vt=tempvt;
}
else if(num==temp)
{
//cout<<"相等";
}
temp=0;
tempvt.clear();
}
j++;
//sum*=j;
}
}
}
if(num>0)//不加判断会出现异常退出 原因越界
{
cout<<num<<endl;
for(int i=0;i<vt.size()-1;i++)
cout<<vt.at(i)<<"*";
cout<<vt.at(vt.size()-1);
}
else
{
cout<<1<<endl;
cout<<N;
}
return 0;
}
总结:要注意越界的问题。特别是结果为最小值和最大值时。