2018深圳-Ultra Weak Goldbach‘s Conjecture-(数论+rabin)

本文讨论了如何利用哥德巴赫猜想和Rabin素数测试技巧,解决大于11的数能否用六个质因数表示的问题,通过转化和优化算法,提高求解效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

L

题意:
刚开始说哥德巴赫猜想任意一个大于2的偶数都能被两个质数相加,然后又说大于5的奇数能被3个质数相加。现在问你任意大于11的数,是否能用6个质因数相加,如果不能输出impossible否则输出6个数字。

思考:
刚开始说的2个定理,我总感觉会用到…把2的和5的联合起来,实际上不是按这来做的。对于任意一个>11的要表示成6个数字,那为何我不先把其中4个给用掉呢,然后就变成2个数相加即可,也就是变成了哥德巴赫,但是剩余的数需要是偶数。很明显如果n是奇数那么先减去2 2 2 3,如果是偶数先减去2 2 2 2。剩下的就直接哥德巴赫就行了。对了,由于n很大,直接check会太慢,用了rabin快速判断素数。同时用了快速乘,快速幂里面的乘法也用快速乘。因为模数是1e9+7,如果两个1e9+5相乘,就炸longlong了,所以快速成能保证不炸。为什么以前%1e9+7不会炸呢,因为long long最大可以存9e18,所以不会炸。这题同样是%1e9+7为啥炸了呢,因为rabin里面有个地方不是%1e9+7而是%x,所以有可能炸。

代码:

int T,n,m,k;
int va[M];
int pri[M],st[M],cnt;

int ksc(int a,int b,int p)
{
//	int sum = 0;
//	while(b)
//	{
//		if(b&1) sum = (sum+a)%p;
//		a = (a+a)%p;
//		b >>= 1;
//	}	
//	return sum;
	return (a*b-(int)(a/(long double)p*b+1e-3)*p+p)%p;
}

int ksm(int a,int b,int p)
{
	int sum = 1;
	while(b)
	{
		if(b&1) sum = ksc(sum,a,p);
		a = ksc(a,a,p);
		b >>= 1;
	}
	return sum;
}

bool rabin(int x)
{
	if(x==2) return true;
	if(x<2||!(x&1)) return false;
	int a = 0,b = x-1;
	while(!(b&1)) a++,b>>=1;
	srand(time(NULL));
	for(int i=1;i<=5;i++)
	{
		int t = rand()%(x-2)+2;
		int now = ksm(t,b,x),pre = now;
		for(int j=1;j<=a;j++)
		{
			now = ksc(now,now,x);
			if(now==1&&pre!=1&&pre!=x-1) return false;
			pre = now;
		}
		if(now!=1) return false;
	}
	return true;
}

void init(int x)
{
	st[1] = 1;
	for(int i=2;i<=x;i++)
	{
		if(!st[i]) pri[++cnt] = i;
		for(int j=1;pri[j]*i<=x;j++)
		{
			st[pri[j]*i] = 1;
			if(i%pri[j]==0) break;
		}
	}
}

/*
当然也可以直接check一遍
bool check(int x)
{
	int a = x,b = n-x;
	for(int i=1;i<=cnt&&pri[i]<=b;i++)
	{
		if(pri[i]==b) return true;
		if(b%pri[i]==0) return false;
	}
	return true; //这里为什么一定是true呢,因为一个大数,如果不是质数,他的因子一定在sqrt(x)之内,现在1e6之内都没有这个因子,所以他肯定是质数。当然了x最大是1e12,所以就看看1e6之内有没有就行了。
}
*/

signed main()
{
	IOS;
	init(1e6+5);
	cin>>T;
	for(int cs=1;cs<=T;cs++)
	{
		cin>>n;
		cout<<"Case "<<cs<<": ";
		if(n<=11)
		{
			cout<<"IMPOSSIBLE\n";
			continue;
		}
		if(n&1)
		{
			n -= 9;
			cout<<"2 2 2 3 ";
			for(int i=1;i<=cnt&&pri[i]<=n;i++)
			{
				if(rabin(n-pri[i]))
				{
					cout<<pri[i]<<" "<<n-pri[i]<<"\n";
					break;
				}
			}
		}
		else
		{
			n -= 8;
			cout<<"2 2 2 2 ";
			for(int i=1;i<=cnt&&pri[i]<=n;i++)
			{
				if(rabin(n-pri[i]))
				{
					cout<<pri[i]<<" "<<n-pri[i]<<"\n";
					break;
				}
			}
		}
	}
	return 0;
}

总结:
多多思考积累经验,把复杂的问题简单化,要多想想如何去转化成这样。

### 腾讯iOA私有化部署成本分析 腾讯iOA作为国内领先的零信任安全解决方案之一,支持SaaS、私有化及混合部署模式。在企业对数据安全性要求较高的场景下,私有化部署成为首选方案。以下从硬件投入、软件授权、运维服务等方面进行综合成本分析。 #### 硬件投入成本 私有化部署需要本地服务器资源来承载控制中心、网关和终端管理模块。根据典型中型企业需求,建议采用双节点高可用架构,每台服务器配置不低于8核CPU、32GB内存、1TB SSD存储空间,以保障策略计算、身份认证与访问控制的稳定运行[^2]。若采用物理服务器采购方式,两台设备成本约在10~15万元区间;若已有虚拟化平台,则可通过分配资源池降低硬件支[^1]。 #### 软件授权与服务费用 腾讯iOA私有化版本按用户数或终端数量进行授权计费,具体价格因功能模块组合而异。基础版包含零信任SDP(软件定义边界)与CWPP(云工作负载保护平台)能力,适用于远程办公与应用访问控制场景,年费约为每位用户300元起[^2]。对于500人规模的企业,年度授权成本约15万元。此外,首次部署需支付一次性实施服务费,涵盖系统集成、策略配置与接口对接等,通常为5~8万元[^3]。 #### 运维与扩展成本 私有化部署后需配备专业IT团队负责日常维护、日志审计与策略优化。若企业内部缺乏相应技术储备,可选择厂商提供的年度运维服务包,费用约为软件授权金额的20%~30%。随着业务增长,新增用户或功能模块扩展将产生额外成本,例如增加DLP(数据防泄漏)模块后,整体预算需上浮10%~15%。 #### 总体预算估算 综合上述因素,一个中型企业在完成腾讯iOA私有化部署后的首年总成本包括: - 硬件投入:10~15万元 - 软件授权:15万元(500用户规模) - 实施服务费:5~8万元 - 年度运维服务费:3~5万元 总计约33~41万元,略超30万元预算上限。若希望压缩至30万元以内,可通过精简功能模块(如仅启用SDP与基础身份认证)、复用现有服务器资源或延长付款周期等方式实现初步部署[^3]。 ```python # 成本估算示例代码 def estimate_cost(users=500, license_per_user=300, setup_fee=60000, maintenance_rate=0.25): hardware_cost = 120000 # 假设复用部分资源,取中间值 license_cost = users * license_per_user total_initial_cost = hardware_cost + license_cost + setup_fee annual_maintenance = (license_cost + setup_fee) * maintenance_rate total_first_year = total_initial_cost + annual_maintenance return { "Initial Hardware Cost": hardware_cost, "License Cost": license_cost, "Setup Service Fee": setup_fee, "Annual Maintenance": annual_maintenance, "Total First Year": total_first_year } estimate_cost() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值