欲买桂花同载酒终不似少年游 2018-10-02 14:25 采纳率: 0%
浏览 596

ZOJ 1003 crashing balloon 算法如何优化

#include
#include
#include
#include
int zdgys(int x,int y)//求最大公约数
{
int m,r;
if(x>y)
{
r=x%y;
while(r)
{
x=y;
y=r;
r=x%y;
}
m=y;
}
else {
r=y%x;
while(r)
{

     y=x;
    x=r;
    r=y%x;
   }
   m=x;
}

return m;

}
int is_prime(int n)//判断质数
{

int i;
if(n<=1) return 0;
int m = floor(sqrt(n)+0.5);
for(i=2;i<=m;i++)
if(n%i==0) return 0;
return 1;

}
int is_pfs(int m)//判断平方数
{
if(sqrt(m)==(int)(sqrt(m))) return 1;
return 0;

}
int min(x,y)//求最小数
{
if(x>y) return y;
else return x;
}
int main()
{
int x,y;
while(scanf("%d %d",&x,&y)!=EOF)
if(x<100&&y<100)
{
printf("%d\n",min(x,y));

}
else{
int  q=zdgys(x,y);
while(zdgys(x,y)>=100&&!is_prime(zdgys(x,y)))
{
   int t=zdgys(x,y);
   int i,q;
    for(i=2;i<=t;i++)
    {
        if(t%i==0&&i<100&&t/i<100)
        {
           q=t/i;
           break;
        }
    }
}
if(is_pfs(q)||is_prime(q))
{
 printf("%d\n",min(x,y));
}

}

}
我觉得我算法没什么问题吧,但是提交一直TLE。请问各位大佬如何优化这个算法。另外请问是不是调用函数越多,时间花费越大

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-10-03 02:06
    关注
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能