A Hard Problem

Posted Jozky86

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了A Hard Problem相关的知识,希望对你有一定的参考价值。

A Hard Problem

题意:

给定一个n,要求找到最小的正数k,使得在集合T中任意选K个数,其中存在两个不同的u和v,u是v的因子

题解:

一开始想偏了,往质因数方向想了,然后因为1e9的以内的质数无法求而放弃
这个题其实很简单,我们想:对于一个数n,离他最近的因子(不考虑本身)就是n/2,也就说n,n-1,n-2…,n/2+1,这些数两两之间不存在因子关系,因为n最近的都到n/2,所以k最小就是(n+1)/2+1,n除以2向上取整+1,因为必须+1才保证正好存在因子关系

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e8+9;
typedef long long ll;
map<int,int>tag;
map<int,int>Pri;
map<int,int>ans;
int tot=0;
void prime()
{
	tag[1]=tag[0]=1;
	int N=100000;
	for(ll i=2;i<=N;i++)
	{
		if(!tag[i])Pri[++tot]=i;
		ans[i]=tot+1;
		for(ll j=1;j<=tot&&i*Pri[j]<=N;j++)
		{
			tag[i*Pri[j]]=1;
			if(i%Pri[j]==0)break;
		}
	}
}
int main(){
	int t;
	cin>>t;
	//prime();
	int q=1;
	while(t--)
	{
		int n;
		cin>>n;
		cout<<(n+1)/2+1<<endl;
		//cout<<"q="<<ans[++q]<<endl;
	}

	return 0;
}

以上是关于A Hard Problem的主要内容,如果未能解决你的问题,请参考以下文章

A very hard Aoshu problem

Codeforce 687A. NP-Hard Problem

UVALive - 5107 - A hard Aoshu Problem

nowcoder A hard problem /// 数位DP

A Hard Problem

HDU 4403 A very hard Aoshu problem (DFS暴力)