关于C++变量速度
  • 板块灌水区
  • 楼主封禁用户
  • 当前回复45
  • 已保存回复45
  • 发布时间2024/5/15 20:05
  • 上次更新2024/5/21 18:52:00
查看原帖
关于C++变量速度
542698
封禁用户楼主2024/5/15 20:05
#include<bits/stdc++.h>
#define int long long
using namespace std;
bool vis[10];
int tot;
void dfs(int now,register int sum,int maxn)
{
	if(now>maxn)
	{
		int num=sqrt(sum);
		if(sum==1||sum==4)return;
		if(sum==2||sum==3)
		{
			v[++tot]=sum;
			return;
		}
		if(sum%6!=1&&sum%6!=5)return;
		for(int i=5;i<=num;i+=6)if(sum%i==0||sum%(i+2)==0)return;
		++tot;
		return;
	}
	for(int i=0;i<10;i++)
		if(!vis[i])
		{
			if(now==1&&i==0)continue;
			vis[i]=1;
			dfs(now+1,sum*10+i,maxn);
			vis[i]=0;
		}
}
signed main()
{
//	freopen("test.out","w",stdout);
	for(int i=1;i<10;i++)dfs(1,0,i);
//	cout<<tot<<endl;
}

这份代码跑了2s

但是如果去掉 dfs 中的 ++tot 就只跑了80ms

实测 ++tot 会被执行 283086 次

为什么不到 1e6 次加法会导致慢这么多?

2024/5/15 20:05
加载中...