hdu 4228 Flooring Tiles DFS

本文探讨如何通过质数表计算出最小的整数x,使得x的因子数为2*n或2*n-1。通过分析质数表和因子数特性,给出了一种递归函数和深度优先搜索算法来解决此问题,并提供了代码实现。

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

//求出最小的x使得x的因子数为2*n,或者2*n-1;
//也就是求出最小的x使得x的因子数为k(k为2*n或者2*n-1);
//素数表 prime{0,2,3,5,7,11,13,17,19};
//如果一个数num = prime ^ (2 * n - 1) (基数的情况) 则它的因子数为 2 * n ;
//如果一个数num = prime ^ (2 * n    ) (偶数的情况) 则它的因子数为 2 * n + 1; (prime 是一个质素);
//现在知道因子数为k , k = k1 * k2 * k3 * ... * kn;

//则x = prime[1]^( k1 - 1 ) * prime[2] * ( k2 - 1 ) * prime[3] * ( k3 - 1 ) * ... * prime[n] * ( kn - 1 );

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4228

//求出最小的x使得x的因子数为2*n,或者2*n-1;
//也就是求出最小的x使得x的因子数为k(k为2*n或者2*n-1);
//素数表 prime{0,2,3,5,7,11,13,17,19};
//如果一个数num = prime ^ (2 * n - 1) (基数的情况) 则它的因子数为 2 * n ;
//如果一个数num = prime ^ (2 * n    ) (偶数的情况) 则它的因子数为 2 * n + 1; (prime 是一个质素);
//现在知道因子数为k , k = k1 * k2 * k3 * ... * kn;
//则x = prime[1]^( k1 - 1 ) * prime[2] * ( k2 - 1 ) * prime[3] * ( k3 - 1 ) * ... * prime[n] * ( kn - 1 );

#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

using namespace std;

long long prime[10] = {0,2,3,5,7,11,13,17,19,23};
//因为75 < 2 ^ 7 所以不需要很大的质数表;
long long ans;
//记录答案;

long long fast_pow(int x,int k) {
	long long base = x;
	long long ans = 1;
	while(k) {
		if(k & 1) ans *= base;
		base *= base;
		k >>= 1;
	}
	return ans;
}

void DFS(int depth,int ret,long long tot) {
	//depth 是当前的深度,代表prime[depth] * ki;
	//ret是代表还有多少剩下;
	//tot是代表当前的总数;
	//printf("tot : %d %lld\n",depth,tot);
	if(depth>8) return ;
	if(tot <= 0) return ;
	if(ret == 1) {
		ans = min(ans,tot);
		return;
	}
	for(long long i = ret ; i >= 2 ; i --) {
		if(ret % i == 0) {
			//用掉了 i ;
			//printf("i : %d %d\n",depth,i);
			//pow函数有误差,哭晕,调了好久之后,还是自己写了一个;
			DFS(depth+1,ret/i,tot * fast_pow(prime[depth] , ( i - 1 ) ) );
		}
	}

}

long long f[75];

void Deal_with() {
	for(int i = 1 ; i <= 75 ; i ++) {
		ans = (long long ) 1 << 60;
		DFS(1,2*i,1);
		DFS(1,2*i-1,1);
		//printf("%lld\n",ans);
		f[i] = ans;
	}
	int n ;
	while(scanf("%d",&n),n) {
		printf("%lld\n",f[n]);
	}

}

int main(void) {
	//freopen("a.in","r",stdin);
	Deal_with();
	return 0;
}



内容概要:《中文大模型基准测评2025年上半年报告》由SuperCLUE团队发布,详细评估了2025年上半年中文大模型的发展状况。报告涵盖了大模型的关键进展、国内外大模型全景图及差距、专项测评基准介绍等。通过SuperCLUE基准,对45个国内外代表性大模型进行了六大任务(数学推理、科学推理、代码生成、智能体Agent、精确指令遵循、幻觉控制)的综合测评。结果显示,海外模型如o3、o4-mini(high)在推理任务上表现突出,而国内模型如Doubao-Seed-1.6-thinking-250715在智能体Agent和幻觉控制任务上表现出色。此外,报告还分析了模型性价比、效能区间分布,并对代表性模型如Doubao-Seed-1.6-thinking-250715、DeepSeek-R1-0528、GLM-4.5等进行了详细介绍。整体来看,国内大模型在特定任务上已接近国际顶尖水平,但在综合推理能力上仍有提升空间。 适用人群:对大模型技术感兴趣的科研人员、工程师、产品经理及投资者。 使用场景及目标:①了解2025年上半年中文大模型的发展现状与趋势;②评估国内外大模型在不同任务上的表现差异;③为技术选型和性能优化提供参考依据。 其他说明:报告提供了详细的测评方法、评分标准及结果分析,确保评估的科学性和公正性。此外,SuperCLUE团队还发布了多个专项测评基准,涵盖多模态、文本、推理等多个领域,为业界提供全面的测评服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值