為什麼會一直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?
為什麼會一直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的情況