首页 > 其他分享 >20240405比赛总结

20240405比赛总结

时间:2024-04-05 15:45:11浏览次数:37  
标签:总结 约数 2e9 比赛 int long ans include 20240405

寄的很惨

T1 [JLOI2014] 聪明的燕姿

https://gxyzoj.com/d/hzoj/p/3672

敲个警钟,千万不要用一些奇怪的方法写自己会的题,不然大概率会一分不剩

由小学奥数知识,约数和的求法为\(\prod (1+p_i^2+p_i^3+\dots+p_i^{a_i})\)

所以,可以先线性预处理出约数和,再直接统计,时间复杂度\(O(nk)\),显然会T

考虑优化,显然,约数和也是一个乘积所以可以枚举其因子,注意,同一个p只可以使用一次

所以可以dfs,记录当前的答案和剩余的数,但是,2e9以内的质数不会少于5e7个,所以,还要优化

因为一个数n中不会出现两个超过\(\sqrt n\)的因数,所以,考虑只枚举\(\sqrt{10^9}\)以内的因数,其余暴力判断即可

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int N=2e9;
int s,idx,ans,t[100005];
bool get_prime(int x)
{
	if(x==1||x==0) return 0;
	for(int i=2;i<=x/i;i++)
	{
		if(x%i==0) return 0;
	}
	return 1;
}
int cnt,p[50005];
bool vis[50005];
void dfs(int x,int num,int id)
{
	//printf("%d %d %d\n",x,num,id);
	if(x==1)
	{
		t[++ans]=num;
		return;
	}
	for(int i=id;i<=cnt&&p[i]*p[i]<=x;i++)
	{
		ll tmp=1,sum=1;
		for(int j=1;;j++)
		{
			tmp*=p[i];
			sum+=tmp;
			if(sum<=x)
			{
				if(x%sum==0)
				{
					dfs(x/sum,num*tmp,i+1);
				}
			}
			else break;
		}
	}
	if(get_prime(x-1)&&x-1&&x-1>=p[id]) t[++ans]=(x-1)*num;
}
int main()
{
	for(int i=2;i<=50000;i++)
	{
		if(!vis[i]) p[++cnt]=i;
		for(int j=1;i*p[j]<=50000;j++)
		{
			vis[i*p[j]]=1;
			if(i%p[j]==0) break;
		}
	}
	while(cin>>s)
	{
		ans=0;
		dfs(s,1,1);
		sort(t+1,t+ans+1);
		int tmp=ans;
		for(int i=1;i<=ans;i++)
		{
			if(t[i]==t[i-1]) tmp--;
		}
		printf("%d\n",tmp);
		for(int i=1;i<=ans;i++)
		{
			if(t[i]!=t[i-1]) printf("%d ",t[i]);
		}
		if(ans)
		printf("\n");
	}
	return 0;
}


标签:总结,约数,2e9,比赛,int,long,ans,include,20240405
From: https://www.cnblogs.com/wangsiqi2010916/p/18115810

相关文章

  • 总结一下在搭建后端系统时所需要的模块
    安全与验证模块:安全验证模块:包括身份验证、授权、访问控制等。校验模块:对输入数据进行验证,防止无效或恶意数据。数据管理与处理模块:数据库连接模块:负责与数据库建立连接并执行操作。数据转换模块:处理数据的格式转换和映射。缓存模块:存储常用数据以提高性能。基础架构模......
  • 设计模式总结-简单工厂模式
    简单工厂模式创建型模式创建型模式概述创建型模式种类简单工厂模式模式定义模式动机模式结构模式分析模式实例与解析实例一:简单电视机工厂实例二:权限管理模式优缺点简单工厂模式的优点简单工厂模式的缺点模式适用环境模式扩展小结创建型模式创建型模式概述创建......
  • 开关二极管选型参数,结构原理,工艺与注意问题总结
      ......
  • Java学习-第一章第二章知识内容总结
    一、第一章的学习中,我了解到了什么Java编程语言,明白了它的发展史以及平台和运行机制,下载并安装成功好了Java的开发环境JDK17以及第一个Java入门程序helloworld的编写,还有就是懂得了如何用IDEA和JShell交互式这两种开发方式来编写简单的程序;二、在第二章的学习中,我对Java的数据......
  • 信号与线性系统分析第一章总结
    参考资料:《信号与线性系统分析》第五版吴大正著......
  • 双指针做题总结2(76. 最小覆盖子串)
    76.最小覆盖子串 思路:双指针滑动窗口问题,指针的移动条件是双指针的核心。 反思:1、考虑右指针已经移动到最右端,无法继续移动的情况。(flag1的思路)2、用map.empty()是要千万注意:map[key]相当于往map中添加元素 代码:classSolution{public:unordered_map<char,i......
  • 家居网购项目--项目总结
    家居网购项目--项目总结家居网购项目总结本项目是基于java的前后端项目,使用原生的Servlet+jsp开发。主要的技术点:1.登录注册功能:使用kaptcha去生成验证码,使用邮件完成注册2.使用拦截器拦截用户请求,限制用户访问权限3.使用ThreadLocal确保是同一线程来完成事务的提交和回......
  • 前端学习思维导图总结~~~CSS篇
    一、前端学习总结CSS部分:二、随记分享这是前端学习过程中总结的思维导图,总结并分享出来,希望给有需要的朋友呀一些帮助,给各位看官一些参考总结的思维导图文件在 主页资源(免费):前端三件套之一:css学习总结思维导图资源-CSDN文库https://download.csdn.net/download/m0_615......
  • 元组、布尔、集合内置方法以及数据类型内置方法总结
    昨日内容回顾【一】列表类型内置方法(一)类型强制转换字符串可以转换成列表字符串中的每一个元素字典转换为列表以后是字典的键元组转换为列表集合转换为列表集合的去重性和无序性--->一旦转换成功这个列表就定死(二)按照索引取值正向:从0开始反向:从-1开始可......
  • 面试题总结综合
    煞笔!终究转移到这是吗?1.自我介绍你好我叫杨凯23年毕业于河北工业大学211计算机科学与技术专业这次应聘的是贵公司测试工程师的(Java后端研发工程师的)岗位大学期间参加过创新创业大赛以及acm的培训(有两年的开发经验,其中一年在实习)做过的项目有实习时做的接口管理......