noip t2我写的枚举因数。
预处理如下
#include<bits/stdc++.h>
using namespace std;
const int N=1050000,M=(1<<20)+1,MM=(1<<17)+1;
vector<int> v[N];
int main()
{
int sum=0;
for(int i=2;i<=M;i++)
{
for(register int now=1;now*i<=M;now++)
v[now*i].push_back(i),sum++;
}
cout<<sum;
}
本机跑4s左右,但是通过输出,可以发现push_back只执行了1.3e7左右,幸好在考试时没都预处理到1<<20
但也与100pts无缘了。
那请问有什么方法解决vector大常数这个问题呢。