文章

101

粉丝

0

获赞

81

访问

4.8k

头像
最长连续因子 题解:
P1020 贵州大学机试题
发布于2026年1月31日 11:17
阅读数 34

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

const int N=10010;

int len=1,index;
vector<int> a;

void work(int x)
{
	for(int i=2;i*i<=x;i++)
	{
		if(x%i==0)
		{
		    int t=x/i;
		    if(i!=t)
		        a.push_back(t);
			a.push_back(i);
		}
	}
	sort(a.begin(),a.end());
	int cnt=1,index_0=-1;
	for(int i=0;i<a.size()-1;i++)
	{
		if(a[i]+1==a[i+1])
		{
			if(index_0==-1)
				index_0=i;
			cnt++;
		}
		else
		{
			if(cnt>len)
			{
				len=cnt;
				index=index_0;
				cnt=0;
				index_0=-1;
			}
		}	
	}
}

int main()
{
	int n;
	cin>>n;
	work(n);
	for(int i=index;i<index+len;i++)
		cout<<a[i]<<" ";
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发