链接:http://uoj.ac/problem/82

  1. 今天是世界水日,著名的水题资源专家蝈蝈大臣向世界宣布了他的一项新发明 —— 水题生成器。
  2.  
  3. 每道题目都有一个正整数的难度值。水题生成器虽然强大但是功能有限。水题生成器内部有一个参数 nn,你可以告诉水题生成器一个能整除 n!n! 的正整数 dd,水题生成器就会产生一道难度值恰为 dd 的水题。这里 n!n! 表示 nn 的阶乘。
  4.  
  5. 现在蝈蝈大臣的助手欧姆想用水题生成器产生不超过 nn 道水题,且难度值之和恰为 mm。保证 mn!≤mn!。
  6.  
  7. 欧姆当然知道怎么做啦!但是他想考考你。请你给出一组合法方案或输出无解。
  8.  
  9. 输入格式
  10. 第一行一个正整数 nn
  11.  
  12. 第二行一个正整数 mm。保证 mn!≤mn!。
  13.  
  14. 输出格式
  15. 不超过 nn 行,每行一个正整数 dd,表示你每次告诉水题生成器的难度值。
  16.  
  17. 输出的每个难度值都必须是 n!n! 的约数,且难度值之和恰为 mm
  18.  
  19. 如果有多组解,输出任意一组均可。如果无解请直接输出卖萌表情 “>w<”(不含引号)
  20.  
  21. 样例一
  22. input
  23.  
  24. output
  25.  
  26. explanation
  27.  
  28. !=××××=!=××××=。 都是 的约数,且 ++=++=。
  29.  
  30. 样例二
  31. input
  32.  
  33. output
  34.  
  35. 限制与约定
  36. 测试点编号 nn的规模
  37. , , , , , n5n
  38. , , , , , , , n9n
  39. , , , , , n20n
  40. 时间限制:1s1s
  41. 空间限制:256MB

题干

其实我也不会看了题解。。。
还是直接看题接的解释吧:

        

  1. 水题生成器
  2. from taorunz
  3.  
  4. 算法一
  5.  
  6. 对于前6个数据n5n≤,!=!=,只有1616个约数。 我们直接用165165枚举这些子集,找到一个和等于mm的集合即可。
  7.  
  8. 当然,由于nn很小,你还可以用分类讨论之类的方法乱搞。
  9.  
  10. 期望得分:30
  11.  
  12. 算法二
  13.  
  14. 对于前14个数据n9n≤.
  15.  
  16. 我们可以将本问题看成一个背包问题来解。
  17.  
  18. 时间复杂度是O(d(n!)∗m)O(d(n!)∗m)的, 其中d(x)d(x)表示xx的约数。
  19.  
  20. 期望得分:70
  21.  
  22. 算法三
  23.  
  24. 本题与阶乘紧密相关,说到把不超过n!n!的数分解成nn个数的和,最容易想到的就是阶乘进位制。(就是分解成 kakk!∑kakk! akkakk
  25.  
  26. 然而在本题里,用阶乘进位制分解得到的数不一定是n!n!的约数。 (例如样例一,阶乘进位制分解为100=+=×!+×!=+=×!+×!,96却不是120约数)
  27.  
  28. 怎么办呢? 把阶乘进位制倒过来!
  29.  
  30. 我们令新的进位制的第kk位的位值为 n(n−)⋯(nk)n(n−)⋯(nk)
  31. 然后将mm分解,我们发现分解出来的数都是形如n(n−)⋯(nk)akn(n−)⋯(nk)ak的数。而akak是小于(nk)(nk)的!
  32.  
  33. 这样n(n−)⋯(nk)akn(n−)⋯(nk)ak就一定是n!n!的约数,本题圆满解决啦!
  34.  
  35. 期望得分:100
  36.  
  37. 算法四
  38.  
  39. 不知道阶乘进位制?没关系!我们可以直接贪心!
  40.  
  41. 我们先算出n!n!的所有约数(n=20n=20时有4104041040个),然后从大到小依次尝试减去当前数,直到减为零为止。
  42.  
  43. 有趣的是,用这种方法,一定可以在不超过nn步内减到零!
  44.  
  45. 为什么呢?我们参考算法三,对于当前剩余要造题的难度值之和mm ,我们可以将它表示成反阶乘进位制后,取出最高位的数。这样就可以使得mm′降低一个(反阶乘进位制的)数量级。而算法四所取出来的数不会比算法三取出的低,所以算法四也可以保证每次使得mm′降低一个(反阶乘进位制的)数量级。而总共数量级最多为nn,一定能够在nn次内减到零。
  46.  
  47. 期望得分:100

题解

  1. #include<cstdlib>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<iostream>
  6. #include<algorithm>
  7. using namespace std;
  8. #define LL unsigned long long
  9. LL n,tot=,m;
  10. int main()
  11. {
  12. cin>>n>>m;
  13. for(int i=;i<=n;i++) tot*=i;
  14.  
  15. for(int i=;i<=n;i++)
  16. {
  17. tot/=i;
  18. if(tot<=m)
  19. {
  20. printf("%lld ",tot*(m/tot));
  21. m-=tot*(m/tot);
  22. }
  23. }
  24. return ;
  25. }

代码

#82. 【UR #7】水题生成器的更多相关文章

  1. 【UOJ#82】【UR #7】水题生成器(贪心)

    [UOJ#82][UR #7]水题生成器(贪心) 题面 UOJ 题解 把\(n!\)的所有约数搜出来,这个个数不会很多. 然后从大往小能选则选就好了. #include<iostream> ...

  2. 【UR #7】水题走四方

    题目描述 今天是世界水日,著名的水题资源专家蝈蝈大臣发起了水题走四方活动,向全世界发放成千上万的水题. 蝈蝈大臣是家里蹲大学的教授,当然不愿意出门发水题啦!所以他委托他的助手欧姆来发. 助手欧姆最近做 ...

  3. URAL 1136 Parliament 二叉树水题 BST后序遍历建树

    二叉树水题,特别是昨天刚做完二叉树用中序后序建树,现在来做这个很快的. 跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递 ...

  4. Identity Card(水题)

    Identity Card Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  5. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  6. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  7. ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

  8. [poj2247] Humble Numbers (DP水题)

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  9. gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,

    1195: 相信我这是水题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 821  Solved: 219 Description GDUT中有个风云人 ...

随机推荐

  1. cnn汉字识别 tensorflow demo

    # -*- coding: utf-8 -*- import tensorflow as tf import os import random import tensorflow.contrib.sl ...

  2. php字符串啊的heredoc格式

    Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术.它也出现unix/linux的shell编程里面.但是现在的一些论坛程序,和部分文 ...

  3. Java 发送Get和Post请求

    package com.htpt.superviseServices.dm.util; import java.io.BufferedReader; import java.io.IOExceptio ...

  4. cygwin Could not create directory '/home/Administrator/.ssh'

    在cygwin下运行: ssh-keygen -C "634772208@qq.com" -t rsa 时,出现如下错误: cygwin Could not create dire ...

  5. regular

    regular.py import re # . # 只能匹配一个字母,而不是2个或0个 # \ # 转义 # 'abc\\.com' r'abc\.com' # 字符集[] # 匹配他所包括的任意字 ...

  6. 移植最新版libmemcached到VC++的艰苦历程和经验总结(下)

    结果如何呢?我的VC++测试用例还是不能调用该接口的接口方法,只是这次的报错方式有所改变,提示是每个C/C++程序员最不愿意看到的“内存地址访问违规”,这一次我确实被郁闷了,这是为什么呢? 五.gcc ...

  7. QQ登陆功能的实现2

    QQ登陆功能的实现2 由于看到园子里有朋友说需要讲解和剖析实现的步骤,前面的QQ登陆实现只有代码,所以这篇补上 1.  分析 1). 当运行QQ.exe后会出现qq登陆界面的窗体 2). 我们用spy ...

  8. android自动化测试之uiautomator

    1.通过monkeyrunner.bat   monkey_record.py启动MonkeyRecorder进行拿到各个控件的坐标(要连上手机才可以启动) 2.也可以通过uiautomatorvie ...

  9. 2.12 Hivet中order by,sort by、distribute by和cluster by

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy 一.order by 对全局数据的排序,仅仅只有一个red ...

  10. 前端基础 之css

    css 介绍 css(层叠样式表)定义如何显示html 元素 当浏览器读到一个样式表, 他就会按照这个表对文档进行格式化(渲染) css语法 css实例 css 注释 注释是代码之母 /* 这是注释* ...