题目如下:
事情是这样的。用这个代码交题目,永远会在某一个测试点 WA:
#include<bits/stdc++.h>
using namespace std;
bool prime(int n){
if(n<2) return false;
for(int i = 2;i*i<=n;i++){
if(n%i==0) return false;
}
return true;
}
int n,factor[1005];
int main(){
memset(factor,0,sizeof(factor));
scanf("%d",&n);
int biggest=0,nn=n;
for(int i = 1;i <= n;i++){
while(prime(i)&&nn%i==0){
factor[i]++;
nn /= i;
biggest = i;
}
}
cout << n << "=";
for(int i = 1;i <= n;i++){
if(factor[i]!=0){
cout << i;
if(factor[i]!=1){
cout << "^" << factor[i];
}
if(i!=biggest) cout << "*";
}
}
return 0;
}
在代码读入 n 后添加这样一段代码:
if(n==1){
for(;;){
printf("JUST MONIKA ");
}
return 0;
}
于是,这个点不 WA 了,改 TLE 了,XJOI 假数据范围实锤。
另外,如果 n=1,程序理论上应该输出什么?