#3921: 怎麼一直RE


s0983573676 (BlackSpace)

學校 : 國立高雄大學
編號 : 12019
來源 : [114.40.156.80]
最後登入時間 :
2011-04-27 18:21:13
a010. 因數分解 | From: [218.173.200.9] | 發表日期 : 2010-06-29 17:32

為什麼會一直RE請大家幫幫我吧!!

#include <iostream>
using namespace std;

int main()
{

 int n,tmp;
 while(scanf("%d",&n)!=EOF){
  int a[1500]={0};
  tmp=n;  
  for(int i=2;i<tmp;i++){
   while(n%i==0){
    a[i]++;
    n=n/i;
   }
   if(n==1)
    break;
  }
  int count=-1;
  for(int i=2;i<=1500;i++){
   if(a[i]>0){
    count++;
   }
  }
  if(count==-1){ 
   printf("%d",tmp);
  }
  for(int i=0;i<=1500;i++){
   if(a[i]==1){
    printf("%d",i);
    if(count>0){
     printf(" * ");
     count--;
    }
   }
   if(a[i]>1){
    printf("%d^%d",i,a[i]);
    if(count>0){
     printf(" * ");
     count--;
    }
   }
  }
  printf("\n");
 }
 return 0;
}

 

 

這段程式碼在我的電腦跑都很正常,會何在測試時一直是RE?

 
#3933: Re:怎麼一直RE


linishan (L)

學校 : 國立交通大學
編號 : 1090
來源 : [104.132.150.102]
最後登入時間 :
2019-05-10 19:57:54
a010. 因數分解 | From: [125.228.107.233] | 發表日期 : 2010-07-05 08:43

為什麼會一直RE請大家幫幫我吧!!

#include
using namespace std;

int main()
{

 int n,tmp;
 while(scanf("%d",&n)!=EOF){
  int a[1500]={0};
  tmp=n;  
  for(int i=2;i
   while(n%i==0){
    a[i]++;
    n=n/i;
   }
   if(n==1)
    break;
  }
  int count=-1;
  for(int i=2;i<=1500;i++){
   if(a[i]>0){
    count++;
   }
  }
  if(count==-1){ 
   printf("%d",tmp);
  }
  for(int i=0;i<=1500;i++){
   if(a[i]==1){
    printf("%d",i);
    if(count>0){
     printf(" * ");
     count--;
    }
   }
   if(a[i]>1){
    printf("%d^%d",i,a[i]);
    if(count>0){
     printf(" * ");
     count--;
    }
   }
  }
  printf("\n");
 }
 return 0;
}

 

 

這段程式碼在我的電腦跑都很正常,會何在測試時一直是RE?


1500 意思是 1500個空間

-- > a[0] ~ a[1499] (1499-0+1=1500)

您的程式會存取到 a[1500]  在這邊會發生RE的情況 

 
ZeroJudge Forum