题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629

扫除了一个知识盲点:约数和定理

约数和定理:

对于一个大于1正整数n可以分解质因数:n=p1^a1*p2^a2*p3^a3*…*pk^ak,则由约数个数定理可知n的正约数有(a₁+1)(a₂+1)(a₃+1)…(ak+1)个,那么n的(a₁+1)(a₂+1)(a₃+1)…(ak+1)个正约数的和为f(n)=(p1^0+p1^1+p1^2+…p1^a1)(p2^0+p2^1+p2^2+…p2^a2)…(pk^0+pk^1+pk^2+…pk^ak)

所以就可以搜索了,可是我搜索好蒻啊不会...

参考这篇博客:https://blog.csdn.net/eolv99/article/details/39644419

于是抄写了一下,但感觉还是没有领悟设计 dfs 的方法...

另外,输出那里注释掉的写法为什么一直WA明明我觉得没什么问题啊...

代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int const maxn=1e5;
int s,pri[maxn+],ans[maxn+],cnt,num;
bool vis[maxn+];
void init()
{
vis[]=;
for(int i=;i<=maxn;i++)
{
if(!vis[i])pri[++cnt]=i;
for(int j=;j<=cnt&&i*pri[j]<=maxn;j++)
{
vis[i*pri[j]]=;
if(i%pri[j]==)break;
}
}
}
bool ispri(int x)
{
if(x<=maxn)return !vis[x];
// for(int i=2;i*i<=x;i++)
// if(x%i==0)return 0;
for(int i=;pri[i]*pri[i]<=x;i++)
if(x%pri[i]==)return ;
return ;
}
void dfs(int last,int nw,int tot)
{
if(tot==){ans[++num]=nw; return;}
if(tot->pri[last]&&ispri(tot-))//tot-1>pri[last],否则可能之后被枚举到
{
ans[++num]=nw*(tot-); //此处不return
}
for(int i=last+;pri[i]*pri[i]<=tot;i++)
for(int t=pri[i],ts=pri[i]+;ts<=tot;t*=pri[i],ts+=t)//+1是pri[i]^0
if(tot%ts==)//!
dfs(i,nw*t,tot/ts);
}
int main()
{
init();
while(~scanf("%d",&s))
{
num=;
dfs(,,s);
sort(ans+,ans+num+);
printf("%d\n",num);
// for(int i=1;i<num;i++)printf("%d ",ans[i]);
// printf("%d\n",ans[num]);
for(int i=;i<=num;i++)
{
printf("%d",ans[i]);
if(i==num)printf("\n"); else printf(" ");
}
}
return ;
}

bzoj3629 [JLOI2014]聪明的燕姿——DFS+约数和定理的更多相关文章

  1. bzoj千题计划297:bzoj3629: [JLOI2014]聪明的燕姿

    http://www.lydsy.com/JudgeOnline/problem.php?id=3629 约数和定理: 若n的标准分解式为 p1^k1 * p2^k2 …… 那么n的约数和= π (Σ ...

  2. bzoj3629[JLOI2014]聪明的燕姿

    http://www.lydsy.com/JudgeOnline/problem.php?id=3629 搜索. 我们知道: 如果$N=\prod\limits_{i=1}^{m}p_{i}^{k_{ ...

  3. bzoj 3629 [JLOI2014]聪明的燕姿(约数和,搜索)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3629 [题意] 给定S,找出所有约数和为S的数. [思路] 若n=p1^a1*p2^a ...

  4. 2018.09.11 bzoj3629: [JLOI2014]聪明的燕姿(搜索)

    传送门 一道神奇的搜索. 直接枚举每个质因数的次数,然后搜索就行了. 显然质因数k次数不超过logkn" role="presentation" style=" ...

  5. bzoj3629 / P4397 [JLOI2014]聪明的燕姿

    P4397 [JLOI2014]聪明的燕姿 根据唯一分解定理 $n=q_{1}^{p_{1}}*q_{2}^{p_{2}}*q_{3}^{p_{3}}*......*q_{m}^{p_{m}}$ 而$ ...

  6. BZOJ_3629_[JLOI2014]聪明的燕姿_dfs

    BZOJ_3629_[JLOI2014]聪明的燕姿_dfs Description 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 ...

  7. P4397 [JLOI2014]聪明的燕姿

    P4397 [JLOI2014]聪明的燕姿 题目背景 阴天傍晚车窗外 未来有一个人在等待 向左向右向前看 爱要拐几个弯才来 我遇见谁会有怎样的对白 我等的人他在多远的未来 我听见风来自地铁和人海 我排 ...

  8. 【LG4397】[JLOI2014]聪明的燕姿

    [LG4397][JLOI2014]聪明的燕姿 题面 洛谷 题解 考虑到约数和函数\(\sigma = \prod (1+p_i+...+p_i^{r_i})\),直接爆搜把所有数搜出来即可. 爆搜过 ...

  9. bzoj 3629 [JLOI2014]聪明的燕姿——约数和定理+dfs

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3629 如果要搜索,肯定得质因数分解吧:就应该朝这个方向想. **约数和定理: 对于任意一个大 ...

随机推荐

  1. IOS上MediaPlayer framework实现视频播放

    播放电影文件: iOS sdk中可以使用MPMoviePlayerController来播放电影文件.但是在iOS设备上播放电影文件有严格的格式要求,只能播放下面两个格式的电影文件. • H.264 ...

  2. css--小白入门篇6(终)

    一.相对定位 定位有三种,分别是相对定位.绝对定位.固定定位. 相对定位: 1 position:relative; 绝对定位: 1 position:absolute; 固定定位: 1 positi ...

  3. (C/C++学习)18.C语言双向链表

    说明:数组提供了连续内存空间的访问和使用,而链表是对内存零碎空间的有效组织和使用.链表又分为单向链表和双向链表,单向链表仅提供了链表的单方向访问,相比之下,双向链表则显得十分方便. 一.单向链表的节点 ...

  4. Linux学习笔记记录(二)

  5. LINUX-SWAP文件系统

    mkswap /dev/hda3 创建一个swap文件系统 swapon /dev/hda3 启用一个新的swap文件系统 swapon /dev/hda2 /dev/hdb3 启用两个swap分区

  6. Jmeter BeanShell PreProcessor使用笔记

    打印log log.info("content:" + content); 将字符串转化为JsonString import com.alibaba.fastjson.JSON; ...

  7. react----父子组件之间的参数传递

    1.父组件向子组件传递参数 //父组件 import React from 'react'; import './header.css' import ComponentChild from './h ...

  8. 解决Web部署 woff字体 404错误

    问题:刚刚在IIS上部署web项目的时候,发现浏览器总是报找不到woff字体的错误.导致浏览器加载字体报404错误. 原因:因为服务器IIS不认WOFF这个文件类型,只要在IIS上添加MIME 类型即 ...

  9. VM 与 与 Linux 的安装

    [VMWare  安装] 输入后, [CentOS ] 1  检查 BIOS  虚拟化 2.新建虚拟机 3.新建虚拟机向导 4创建虚拟空盘 5  安装 Linux  系统对应的 CentOS 6  虚 ...

  10. java面试题(自创)

    1.最后输出的是啥? String s = "hello"; final String str = s; s = "world"; System.out.pri ...