我前面7個測資都過了,最後面三個怎樣都TLE,我該怎麼辦??
P.S:系統說後面三個的n<=5000,前面n<=1000的我都過了...
以下附上小的的程式碼(C++)
#include <iostream>
#include <string>
using namespace std;
int main( )
{
string s;
int n[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int line,a,b,c,N;
bool flag;
cin>>N;
for(line=0;line<N;line++){
flag=false;
cin>>s;
for(a=0;a<25;a++){
c=0;
for(b=0;b<s.size();b++){
c=c*10+(s[b]-48);
if(c>=n[a])c=c%n[a];
}
if(c%n[a]==0){
cout<<n[a]<<" ";
flag=true;
}
}
if(flag==false){
cout<<"Terrible Silence...";
}
cout<<endl;
}
return 0;
}
小的更新後還是不行...
#include
#include
using namespace std;
int main( )
{
string s;
int n[25]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97};
int line,a,b,c,N;
bool flag;
cin>>N;
for(line=0;line<N;line++){
flag=false;
cin>>s;
for(a=0;a<25;a++){
c=0;
for(b=0;b<s.size();b++){
c=c*10+(s[b]-48);
c=c%n[a];
}
if(c%n[a]==0){
cout<<n[a]<<" ";
flag=true;
}
}
if(flag==false){
cout<<"Terrible Silence...";
}
cout<<endl;
}
return 0;
}
您要不要先寫一個大數取模的 function , 我看不懂 cpp, 不過看您取模的過程好掙扎。
5000*25*5000
小的是一邊取模一邊做質因數驗證,所以版面會稍亂一些
另外,小的想問您上面的意思是...
PS能否順便告訴我您的方法和觀念
line 5000
prime 25
s.size 5000
應該會跑很久吧。
5000*25*5000
小的是一邊取模一邊做質因數驗證,所以版面會稍亂一些
另外,小的想問您上面的意思是...
PS能否順便告訴我您的方法和觀念
我將你的程式碼優化過了,但最後三個還是TLE