int与long long效率问题

实验发现,在处理特定问题时,使用int类型的运算速度比long long快。在int下,优化后程序运行时间为300ms,而long long则需要900ms。通过四种优化策略,对于int类型只需两个,而对于long long则需全部四条才能达到相同效果。
摘要由CSDN通过智能技术生成

实验题

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
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值