#17310: 為何會TLE?


aaaaa123 (unknown)

學校 : 不指定學校
編號 : 89844
來源 : [101.10.93.131]
最後登入時間 :
2024-08-24 13:46:11
a010. 因數分解 | From: [1.160.101.175] | 發表日期 : 2019-04-04 20:39

#include <cstdio>
using namespace std;
int main()
{
  int a;
  while(scanf("%d",&a))
  {
  if (a==1)
  printf("%d",a);
    for(int k=2;k<=a;k++)
    {
    int count=0;
    while(a%k==0)
     {
     count++;
     a=a/k;
     }
     if(count==0)
    continue;
    if(a!=1)
    {
    if (count>=2)
    printf("%d^%d * ",k,count);
    else if(count==1)
    printf("%d * ",k);
    }
    else if(a==1)
     {
     if (count>=2)
     {
     printf("%d^%d \n",k,count);
     break;
     }
     else if(count==1)
     {
     printf("%d \n",k);
     break;
     }
     }

  }

}
}
 
#17313: Re:為何會TLE?


TzuchunChen (陳子濬)

學校 : 國立嘉義高級中學
編號 : 59216
來源 : [49.215.236.123]
最後登入時間 :
2019-05-06 08:46:33
a010. 因數分解 | From: [61.64.177.56] | 發表日期 : 2019-04-04 21:07

#include 
using namespace std;
int main()
{
  int a;
  while(scanf("%d",&a))
  {
  if (a==1)
  printf("%d",a);
    for(int k=2;k<=a;k++)
    {
    int count=0;
    while(a%k==0)
     {
     count++;
     a=a/k;
     }
     if(count==0)
    continue;
    if(a!=1)
    {
    if (count>=2)
    printf("%d^%d * ",k,count);
    else if(count==1)
    printf("%d * ",k);
    }
    else if(a==1)
     {
     if (count>=2)
     {
     printf("%d^%d \n",k,count);
     break;
     }
     else if(count==1)
     {
     printf("%d \n",k);
     break;
     }
     }

  }

}
}

while(scanf("%d",&a))要有終止條件,它不像cin會自動判斷輸入完畢
所以你要寫成while(scanf("%d",&a)!=EOF)來判斷輸入是否完畢



 
#17409: Re:為何會TLE?


aaa20011118 (jjj123)

學校 : 國立武陵高級中學
編號 : 78334
來源 : [114.136.24.140]
最後登入時間 :
2019-11-26 19:52:38
a010. 因數分解 | From: [36.230.41.209] | 發表日期 : 2019-04-08 09:41

#include 
using namespace std;
int main()
{
  int a;
  while(scanf("%d",&a))
  {
  if (a==1)
  printf("%d",a);
    for(int k=2;k<=a;k++)
    {
    int count=0;
    while(a%k==0)
     {
     count++;
     a=a/k;
     }
     if(count==0)
    continue;
    if(a!=1)
    {
    if (count>=2)
    printf("%d^%d * ",k,count);
    else if(count==1)
    printf("%d * ",k);
    }
    else if(a==1)
     {
     if (count>=2)
     {
     printf("%d^%d \n",k,count);
     break;
     }
     else if(count==1)
     {
     printf("%d \n",k);
     break;
     }
     }

  }

}
}

while(scanf("%d",&a))要有終止條件,它不像cin會自動判斷輸入完畢
所以你要寫成while(scanf("%d",&a)!=EOF)來判斷輸入是否完畢



那如果有限定輸入次數的話 還要加!=EOF嗎

像是規定輸入七次之類的

 
ZeroJudge Forum