题目大意

找到一个最小的奇数

约数个数为n

结果mod10^9+7

根据 约数个数=(p1+1)*(p2+1)............

将n 枚举分解成连乘式。(枚举个数,dfs)

比较大小 log 了 比较

代码如下:

#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <ctime>
#include <iostream>
#include<algorithm>
#include <sstream>
#include <string>
#define oo 0x13131313
using namespace std;
int n;
int ok;
int q[30]={0,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71};
int A[30];
int B[30];
int ans[30];
int anscishu=0;
double MAX=1<<30;
const long long mod=1000000007;
void dfs(int nn,int k,int now,int cishu)
{
if(k==1)
{
if(nn==1) return ;
A[1]=nn;
double t=0;
for(int i=1;i<=cishu;i++)
B[i]=A[i];
sort(B+1,B+cishu+1);
for(int i=1;i<=cishu;i++)
{
t=t+(double)(B[i]-1)*(double)log(q[cishu-i+1]);
}
if(t<MAX)
{
MAX=t;
anscishu=cishu;
for(int i=1;i<=cishu;i++)
{
ans[i]=B[i];
}
}
ok=1;
return ;
}
for(int i=now;i<=nn;i++)
{
if(nn%i==0)
{
A[k]=i;
dfs(nn/i,k-1,i,cishu);
}
}
}
void solve()
{
MAX=1<<31-1;
for(int i=1;i<=17;i++)
{
ok=0;
dfs(n,i,2,i);
if(ok==0) break;
}
}
void print()
{
long long Ans=1;
for(int i=1;i<=anscishu;i++)
{
for(int j=1;j<=ans[i]-1;j++)
{
Ans=(Ans*(long long)q[anscishu-i+1])%mod;
}
}
printf("%lld\n",Ans);
}
int main()
{
// freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
while(cin>>n)
{
solve();
print();
}
}

【枚举+小技巧】【TOJ4115】【Find the number】的更多相关文章

  1. F. Make Them Similar ( 暴力折半枚举 + 小技巧 )

    传送门 题意: 给你 n 个数 a[ 1 ]  ~ a[ n ], n <= 100: 让你找一个 x , 使得 a[ 1 ] = a[ 1 ] ^ x ~ a[ n ] = a[ n ] ^ ...

  2. Objective-C中3种枚举比较及KVC两个小技巧

    Objective-C中3种枚举比较及KVO两个小技巧 一:oc的3种枚举 for循环 for in 枚举块 如代码 NSUInteger totalCount = 10000; NSMutableA ...

  3. UVa140 Bandwidth 小剪枝+双射小技巧+枚举全排列+字符串的小处理

    给出一个图,找出其中的最小带宽的排列.具体要求见传送门:UVa140 这题有些小技巧可以简化代码的编写. 本题的实现参考了刘汝佳老师的源码,的确给了我许多启发,感谢刘老师. 思路: 建立双射关系:从字 ...

  4. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  5. iOS小技巧总结,绝对有你想要的

    原文链接 在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIV ...

  6. 【js】中的小技巧

    本文主要介绍一些JS中用到的小技巧 1. 类型强制转换   1.1 string强制转换为数字 可以用*1来转化为数字(实际上是调用.valueOf方法) 然后使用Number.isNaN来判断是否为 ...

  7. 可以提升幸福感的js小技巧(下)

    4.数字 4.1 不同进制表示法 ES6中新增了不同进制的书写格式,在后台传参的时候要注意这一点. 29 // 10进制 035 // 8进制29 原来的方式 0o35 // 8进制29 ES6的方式 ...

  8. iOS:小技巧(不断更新)

    记录下一些不常用技巧,以防忘记,复制用. 1.获取当前的View在Window的frame: UIWindow * window=[[[UIApplication sharedApplication] ...

  9. 最强 Android Studio 使用小技巧和快捷键

    写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...

随机推荐

  1. 找不到eth0,但能找到eth1的问题解决办法

    故障现象:Linux的网卡由eth0变成了eth1,如何修复?解决方案:在linux中,udev记录网络规则的脚本为:/etc/udev/rules.d/70-persistent-net.rules ...

  2. 怎样查询SCI和EI检索号

    为了年终考核,花了一个早上才搞清楚,里面有非常多小问题.以下具体说明具体过程: SCI检索号 1.进入图书馆主页: 2.选择"电子数据库": 3.选择外文数据库中的"We ...

  3. c# 图片简单模糊 非高斯模糊

    /// <summary>        /// 图像模糊化        /// </summary>        /// <param name="bit ...

  4. BestCoder Round #14 B 称号 Harry And Dig Machine 【TSP】

    称号:Harry And Dig Machine 哈哈  最终涨边粉色了,不easy呀.顺便写一道题解吧 题意:给一个m*n的矩阵,然后当中最多由10个有值,求总左上角把全部的值都拿上回到左上角的最小 ...

  5. 反对网抄,没有规则可以创建目标"install" 靠谱解答

    在ubuntu下遇到这个问题,原因其实很简单,你不能用WINDWOS下的方法用图形方式打开,然后点了一下按扭"解压缩",生成了一个文件夹. 的确,这个文件夹看起来和正常的没有什么区 ...

  6. 获取系统的IP

    如何获取Linux系统的ip.当时一直用这种方法获取IP的. ifconfig|grep 'Bcast'|awk -F ':' '{print $2}'|awk '{print $1}' 今天偶然发现 ...

  7. 简单随笔——如何在gridview的页脚显示信息。。。。

    我是超级大菜鸟...哈哈 先上图看看是不是你需要的 第一步,右击gridview,在事件中,单击RowdataBond事件. 在这之前一定要记得在gridview属性中的ShowFooter设置为“t ...

  8. PHP常用内置函数

    $_SERVER['SCRIPT_NAME'] 返回/mantis/test.php 相对路径 __FILE__返回文件的绝对路径 $_SERVER['HTTP_X_FORWARDED_PROTO'] ...

  9. Spring Ioc知识整理

    Ioc知识整理(一): IoC (Inversion of Control) 控制反转. 1.bean的别名 我们每个bean元素都有一个id属性,用于唯一标识实例化的一个类,其实name属性也可用来 ...

  10. xml 文件的增删改查

    序列化和反序列化helper using System; using System.Collections.Generic; using System.Linq; using System.Text; ...