#17310: 為何會TLE?


aaaaa123 (unknown)


#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 (陳子濬)


#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)


#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嗎

像是規定輸入七次之類的