实验题
ps:之前听过说long long的时间问题但是一直没有注意到过。直到遇见了他。。。。
这是一个瞎搞题点这里
思路:瞎搞
证明:int快
本着使劲优化的原则,,,加了4个优化。。但是在int数据类型其实这需要加2个多一点的优化就能过去。。。long long下需要加4个完整的优化才可以。
优化1:质数ans=(1+n)/2
优化2:因子只有2个质数组合
优化3:因子只有3个质数组合
优化4:因子只有4个质数组合
每个优化都有对应的ans遍不需要暴力来处理。。。。
但是在4种优化共同起作用时,
int 300ms
long long 900ms
wuwuwu
本来早就可以水过
先附上瞎搞代码
int
#pragma GCC optimize(3,"Ofast","inline") //G++
#include<bits/stdc++.h>
#define mem(a,x) memset(a,x,sizeof(a))
#define debug(x) cout << #x << ": " << x << endl;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fcout cout<<setprecision(4)<<fixed
using namespace std;
typedef long long ll;
//======================================
namespace FastIO{
char print_f[105];void read() {
}void print() {
putchar('\n');}
template <typename T, typename... T2>
inline void read(T &x, T2 &... oth){
x = 0;char ch = getchar();int f = 1;while (!isdigit(ch)){
if (ch == '-')f *= -1;ch = getchar();}while (isdigit(ch)){
x = x * 10 + ch - 48;ch = getchar();}x *= f;read(oth...);}
template <typename T, typename... T2>
inline void print(T x, T2... oth){
int p3=-1;if(x<0) putchar('-'),x=-x;do{
print_f[++p3] = x%10 + 48;}while(x/=10);while(p3>=0) putchar(print_f[p3--]);putchar(' ');print(oth...);}} // namespace FastIO
using FastIO::print;
using FastIO::read;
//======================================
typedef pair<int,int> pii;
const int inf=0x3f3f3f3f;
const int mod=1e9+7;
const int maxn = 1e6+5;
bool vis[maxn];
int vis1[maxn],vis2[maxn],vis3[maxn];
int prime[maxn],pos;
void oulasai(int n) //欧拉筛
{
for(int i=2;i<=n;i++)
{
if(!vis[i]) prime[++pos]=i;
for(int j=1;j<=pos;j++)
{
if(i*prime[j]>n) break;
vis[i*prime[j]]=true;
if(i%prime[j]==0) break;
}
}
vis[1]=1;
}
int cntt=0;
int solve(int n){
int st=sqrt(n);
for(int i=st;i