lalalala


私信TA

用户名:zhangshuo

访问量:161565

签 名:

像狗一样的学习,像绅士一样地玩耍。

等  级
排  名 7
经  验 31306
参赛次数 10
文章发表 201
年  龄 12
在职情况 学生
学  校 芜湖市第十一中学
专  业

  自我简介:

今日懒惰流下的口水,将会成为明日里伤心的泪水。

解题思路:





注意事项:


就明星来啦!!!!


参考代码:


试了三种方法最终还是突破了

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=20100;
int n,tot=0;
int zhishu[maxn];
bool exist[maxn],done[maxn];
void zhishubiao()
{
 memset(done,0,sizeof(done)); zhishu[++tot]=2;
 memset(exist,0,sizeof(exist)); exist[1]=exist[2]=1;
 for (int i=4;i<=maxn;i+=2) done[i]=1;
 for (int i=3;i<=maxn;i++)
 {
  bool flag=0;
   if (!done[i]) for (int j=2;j*j<=i;j++) 
  {
   if (i%j==0)
   {
    for (int k=i+i;k<=maxn;k+=i) done[k]=1;
    flag=1; break;
   }
  }
  if (flag==0 && done[i]==0) done[i]=exist[i]=1,zhishu[++tot]=i;
 }

/* memset(exist,0,sizeof(exist)); exist[1]=exist[2]=1; zhishu[++tot]=2;
 for (int i=3;i<=maxn;i++)
 {
  bool flag=0;
  for (int j=2;j<i;j++) if (i%j==0) { flag=1; break; } 
  if (!flag) { exist[i]=1; zhishu[++tot]=i; } 
 }
*/
}
int main()
{
 scanf("%d",&n); zhishubiao(); int MAX=0,ans;
 while(n--)
 {
  int x,tt; scanf("%d",&x); tt=x; 
  if (exist[x]) if (MAX<x) { MAX=x; ans=x; }
  if (!exist[x]) for (int i=1;i<=tot;i++)
  {
   if (tt==1) break;
   if (MAX<zhishu[i]) {  MAX=zhishu[i]; ans=x; }
   while(1) { if (tt%zhishu[i]==0) tt/=zhishu[i]; else break; }
  }
 }
 printf("%d\n",ans);
 return 0;
}

不解释了,很简单


 

0.0分

0 人评分

  评论区

  • «
  • »