记录编号 58026 评测结果 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
题目名称 数数 最终得分 100
用户昵称 Gravatardigital-T 是否通过 通过
代码语言 C++ 运行时间 0.409 s
提交时间 2013-04-16 11:35:18 内存使用 3.29 MiB
显示代码纯文本
#include<fstream>
#include<vector>
using namespace std;
ifstream fi("counta.in");
ofstream fo("counta.out");
int n,m,k,a,sum=0;
vector <int> su;
int aa[1250],kk[1250];//质因数分解a,k
void check(int x)
{
	for(int ii=1;ii<=su.size()-1;ii++)
		if(x%su[ii]==0)
			return;
	su.push_back(x);
}
int main()
{
	fi>>n>>m>>k;
	int i,j,o,lenk;		
	bool flag;
	su.push_back(1);//有一个
	//求10001内素数,据说有1230个
	su.push_back(2);//第一个素数2
	for(i=3;i<=10001;i++)check(i);//找出3~10001其它素数
	//=======================================================分解k
	j=1;
	while(su[j]<k)j++;lenk=j;
	if(su[j]==k)//尼玛k是个素数
	{
		kk[j]=1;
		for(i=1;i<j;i++)kk[i]=0;
	}
	for(i=1;i<=j;i++)
	{
		if(k%su[i]!=0)
		{
			kk[i]=0;
			goto NEXT;
		}
		o=su[i];kk[i]=1;
		while(k>=o&&k%o==0)
		{
			kk[i]++;
			o*=su[i];
		}
		kk[i]--;
		//fo<<su[i]<<' '<<kk[i]<<endl;
		NEXT:;
	}
	//for(i=1;i<=j;i++)fo<<kk[i]<<endl;===========================
	for(int wtf=1;wtf<=n;wtf++)
	{
		fi>>a;
		for(i=1;i<=lenk;i++)
		{
			if(su[i]>a||a%su[i]!=0)
			{
				aa[i]=0;
				goto NEXT2;
			}
			o=su[i];aa[i]=1;
			while(a>=o&&a%o==0)
			{
				aa[i]++;
				o*=su[i];
			}
			aa[i]--;
			NEXT2:;
			//fo<<aa[i]<<' ';
		}//fo<<endl;
		//==================================================分解a
		flag=true;
		for(i=1;i<=lenk;i++)if(aa[i]*m<kk[i])goto NEXT3;
		sum++;
		NEXT3:;
	}
	fo<<sum;
	return 0;
}