博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4427 Math Magic
阅读量:7125 次
发布时间:2019-06-28

本文共 1307 字,大约阅读时间需要 4 分钟。

       一个长了一张数学脸的dp!!dp[ i ][ s ][ t ] 表示第 i 个数,sum为 s ,lcm下标为 t 时的个数。显然,一个数的因子的lcm还是这个数的因子,所以我们的第三维用因子下标代替lcm,可以有效的减少枚举量。

 

#include
#include
#include
#include
#include
#include
#include
#define LL long long#define CLR(a, b) memset(a, b, sizeof(a))using namespace std;const int N = 1010;const int MOD = 1e9 + 7;int k, num, m;int dp[2][N][40];int ok[N], f[N][N];int gcd(int a, int b){    return b ? gcd(b, a % b) : a;}int lcm(int a, int b){    return a / gcd(a, b) * b;}int main(){    //freopen("input.txt", "r", stdin);    int n, i, j, s, t,  tmd = 0;    while(scanf("%d%d%d", &n, &m, &k) != EOF)    {        CLR(dp, 0);num = 0;        for(i = 1; i <= m; i ++)        {            if(m % i == 0) ok[num ++] = i;        }//num不超过32        for(i = 0; i < num; i ++)        {            for(j = 0; j < num; j ++)            {                t = lcm(ok[i], ok[j]);                for(s = 0; s < num; s ++)                {                    if(ok[s] == t)                    {                        f[i][j] = s;                        break;                    }                }            }        }        for(j = 0; j < num; j ++)        {            dp[0][ok[j]][j] = 1;        }        for(i = 1; i < k; i ++)        {            for(s = 0; s <= n; s ++)//一定记得初始化            {                for(t = 0; t < num; t ++)                {                    dp[i & 1][s][t] = 0;                }            }            for(j = 0; j < num; j ++)            {                for(s = i; s <= n - (k - i - 1) - ok[j]; s ++)                {                    for(t = 0; t < num; t ++)                    {                        dp[i&1][s+ok[j]][f[t][j]]= (dp[i&1][s+ok[j]][f[t][j]]+dp[1-(i&1)][s][t]) % MOD;                    }                }            }        }        printf("%d\n", dp[(k - 1) & 1][n][num - 1]);    }    return 0;}

 

 

 

转载地址:http://wceel.baihongyu.com/

你可能感兴趣的文章
关于LD_DEBUG (转载)
查看>>
linux2.6.30.4内核移植(4)——完善串口驱动
查看>>
Timer&TimerTask原理分析
查看>>
GDI+ 和GDI
查看>>
日常工作中的点滴总结from 2014-03
查看>>
Yii的学习(2)--数据访问对象 (DAO)
查看>>
中国软件开发project师之痛
查看>>
XSS与字符编码的那些事儿
查看>>
抢鞋神器激活器 下载
查看>>
windows server 2008 R2安装图片浏览器/照片查看器方法
查看>>
【来写个2048吧】—— 后期优化及源代码
查看>>
TFS 2010 让安装更简单,也让VSS成为历史
查看>>
select poll使用
查看>>
SQL语句中,Conversion failed when converting datetime from character string.错误的解决办法...
查看>>
MP算法、OMP算法及其在人脸识别的应用
查看>>
Orchard模块开发全接触4:深度改造前台
查看>>
iOS开发系列—Objective-C之内存管理
查看>>
Socket网络编程--聊天程序(5)
查看>>
Python:SQLMap源码精读—start函数
查看>>
jQuery的Internal DSL
查看>>