Chào mọi người!
Em giải đề tìm các số nguyên số thứ K (K<=50,000,000) bên dưới theo phương pháp sàn tới căn bậc 2, nhưng thời gian chạy tới 20s trong khi giới hạn của đề chỉ 1s!
Mong mọi người chỉ dẫn! Em cảm ơn!
Link đề: http://www.spoj.com/problems/KPRIMES2/
Ảnh file cpp + thời gian chạy: http://i345.photobucket.com/albums/p...psrzdzd6kv.png
Em không tải file .cpp lên được nên gửi văn bản code luôn:
#include <iostream>
#include<math.h>
#include <vector>
#define S 982451656//1000000000
#define d 8
using namespace std;
long c=0,i,j ,e=5,f;
long m[50000000], a[100000];
bool b[S]={false};
//vector<long> m;
int main()
{
vector<long> m;
//cin >> d;
f=sqrt(S);
for (i=2; i<f; i++)
if (!b[i]) {
m.push_back(i);
for (j=i*i; j<S ; j+=i)
b[j] = true;
}
for (i=f; i<S; i++)
if (!b[i]) m.push_back(i);
for (int x=0; x<d; x++){ // TỰ SINH 8 SO GIONG BO TEST
a[x]=e;
e=e*10;
cout << m[a[x]-1] << endl;
}
return 0;
}
Em giải đề tìm các số nguyên số thứ K (K<=50,000,000) bên dưới theo phương pháp sàn tới căn bậc 2, nhưng thời gian chạy tới 20s trong khi giới hạn của đề chỉ 1s!
Mong mọi người chỉ dẫn! Em cảm ơn!
Link đề: http://www.spoj.com/problems/KPRIMES2/
Ảnh file cpp + thời gian chạy: http://i345.photobucket.com/albums/p...psrzdzd6kv.png
Em không tải file .cpp lên được nên gửi văn bản code luôn:
#include <iostream>
#include<math.h>
#include <vector>
#define S 982451656//1000000000
#define d 8
using namespace std;
long c=0,i,j ,e=5,f;
long m[50000000], a[100000];
bool b[S]={false};
//vector<long> m;
int main()
{
vector<long> m;
//cin >> d;
f=sqrt(S);
for (i=2; i<f; i++)
if (!b[i]) {
m.push_back(i);
for (j=i*i; j<S ; j+=i)
b[j] = true;
}
for (i=f; i<S; i++)
if (!b[i]) m.push_back(i);
for (int x=0; x<d; x++){ // TỰ SINH 8 SO GIONG BO TEST
a[x]=e;
e=e*10;
cout << m[a[x]-1] << endl;
}
return 0;
}
Comment