您的位置:首页 > 大数据 > 人工智能

UVA 10780 - Again Prime? No Time.

2013-10-21 17:16 495 查看
题目链接

思路好想,注意细节。错了很多次。

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
#define MOD 1000000
int prim[5001];
int o[5001];
int flag[5001];
int aim[5001];
int main()
{
int t,n,m,i,j,num = 0,minz,temp,cas = 1;
for(i = 2;i <= 5000;i ++)
{
if(!o[i])
{
prim[num++] = i;
for(j = i+i;j <= 5000;j += i)
{
o[j] = 1;
}
}
}
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&m,&n);
int tm = m;
memset(flag,0,sizeof(flag));
memset(aim,0,sizeof(aim));
for(i = 2;i <= n;i ++)
{
temp = i;
for(j = 0;j < num;j ++)
{
if(temp == 1) break;
while(temp%prim[j] == 0)
{
flag[j] ++;
temp /= prim[j];
}
}
}
minz = 1000000;
for(j = 0;j < num;j ++)
{
while(m%prim[j] == 0)
{
aim[j] ++;
m /= prim[j];
}
}
for(j = 0;j < num;j ++)
{
if(tm%prim[j] == 0)
minz = min(flag[j]/aim[j],minz);
}
if(minz == 0)
printf("Case %d:\nImpossible to divide\n",cas++);
else
printf("Case %d:\n%d\n",cas++,minz);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: