题干:

“我不做人啦,jojo!”

“Dillonh起来回答问题!”

“啊?”沉迷于jojo的Dillonh又一次上课摸鱼被老师抓到了,他慌忙地抬起头看着讲台上火冒三丈的老师。

“给你一个数n,现在要找到一个集合AA,AA中若干数a1,a2,……ama1,a2,……am,使得n=a1∗a2∗a3∗……∗amn=a1∗a2∗a3∗……∗am,同时对于任意的i和j(1≤i,j≤n1≤i,j≤n)都要满足∣∣ai−aj∣∣≤1|ai−aj|≤1,你能找到所有满足这个条件的集合AA吗。如果对于这个数n有无限多个可能的集合AA,那么就输出-1,否则就输出所有不同的集合。”如果眼神能杀人的话,此刻的Dillonh就已经被他的老师杀了千万遍了。

“这...”沉迷摸鱼的Dillonh自然是不会做这个题的,他现在急的满头大汗。作为聪明的ACMer,你能帮他解决这个问题吗?

(对于两个集合AA和BB,如果两个集合内元素的个数不同的话,就认为这两个集合是不同的;如果这两个集合内元素个数相同的话,如果两个集合内的元素不论以任何顺序排序之后,仍然是不完全相同的话,那么就认为这两个集合是不同的)。

输入描述:

第一行一个数字T,代表有T组测试样例(T<=100)

对于每组测试样例都会输入一个数字n,代表老师提出的问题的数。(n≤1018n≤1018)。

输出描述:

对于每组测试样例,第一行输出一个“Case #x:”,x代表当前为第几组测试样例。如果有无限多个满足条件的集合,第二行就输出“-1”;否则的话,第二行输出一个数字m,代表有m个集合是满足条件的。接下来m行输出这m个集合的信息,按集合内元素个数的大小从小到大输出,每行的第一个数num代表集合内元素的个数,接下来按从小到大输出num个数。每行的两个数之间用一个空格隔开,行末不要有空格。

示例1

输入

复制

2
12
1

输出

复制

Case #1:
3
1 12
2 3 4
3 2 2 3
Case #2:
-1

解题报告:

(来自官方题解)

这是一个考验数学思维的题目。
当满足条件的集合内只有两个数的时候,要么n=a*a,要么n=a*(a-1),我们可以直接对
n进行开根号运算,令cnt1 = ceil(sqrt(n)),cnt2 = floor(sqrt(n)),然后判断cnt1 *
cnt2 是否等于n即可。
当满足条件的集合内有大于等于三个数的时候,我们可以知道n = a * a * a * ... * (a-1)
*...*(a-1)。当a取到最大值时,应该满足n = a * a * a,而n是小于等于1e18的,所以我
们可以知道a是小于等于1e6的,所以我们就可以暴力对a进行枚举了,每次验证一下是否
合法即可。
对于输出“-1”的情况,也就只有当n=1,或者n=2^k的时候会成立,此时n可以分解为
k个2和无数个1相乘的形式,故有无数个集合。最后再按要求处理一下输出就可以了。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
const ll mod = 1e9+7;
typedef long double ld;
int T;
ll n;
vector<vector<ll> > vv;
int main() {scanf("%d",&T);int cas=1;while(T--) {scanf("%lld",&n);ll x=n;while(x%2==0)x/=2;printf("Case #%d:\n",cas++);if(x==1)printf("-1\n");else {vv.clear();for(int i=1; i<=60; i++) {ll t=(ll)powl((ld)n,(ld)(1.0/i));if(t==1)continue;x=n;vector<ll> v;while(x%t==0)x/=t,v.push_back(t);while(x%(t+1)==0)x/=t+1,v.push_back(t+1);if(v.size()==i&&x==1)vv.push_back(v);}printf("%d\n",vv.size());int up = vv.size();for(int i = 0; i<up; i++) {printf("%d",vv[i].size());int upp = vv[i].size();for(int j = 0; j<upp; j++) printf(" %lld",vv[i][j]);printf("\n");}}}return 0;
}

总结:注意精度问题所以需要powl函数

【牛客 - 318E】爱摸鱼的Dillonh(数学,暴力,细节)相关推荐

  1. 爱摸鱼的Dillonh

    https://ac.nowcoder.com/acm/contest/318/E C++版本一 题解: 这是一个考验数学思维的题目. 当满足条件的集合内只有两个数的时候,要么n=a*a,要么n=a* ...

  2. 牛客 牛牛爱喝酒(模拟)

    文章目录 1. 题目 2. 解题 1. 题目 链接:https://ac.nowcoder.com/acm/contest/9752/A 来源:牛客网 牛牛是一个酒鬼,非常爱喝酒, 一瓶酒m元钱, 两 ...

  3. 牛客 13822 Keep In Line(枚举与暴力、Python)

    同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 链接:https://ac.nowcoder.com/acm/problem/13822 来源:牛客网 时间限制: ...

  4. 牛客小白月赛6 J 洋灰三角 数学

    链接:https://www.nowcoder.com/acm/contest/136/J 来源:牛客网 题目描述 洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土. WHZ有很多铸造成 ...

  5. 为情怀买单--爱摸鱼的美工(14)

    -----------作者:天涯小Y 4 hours later 花钱坐得屁股痛 你就折腾吧! 生活中有四件事可以改变你 爱.音乐.文字和失去 前三件事让人心生希望 请允许最后一件事使你变得勇敢 希望 ...

  6. 唯愿山城无恙-烟火寻常--爱摸鱼的美工(五)

    -----------作者:天涯小Y 非常时期的非常生活! 今天是承上启下的一天 无论好坏,本月都收官了 洗去一身的疲惫 大脑放空,搓澡 热衷搓澡的程度,简直不像南方人 收拾一下,迎接新的开始 原本一 ...

  7. 牛客-乃爱与城市拥挤程度【树形dp】

    正题 题目链接:https://ac.nowcoder.com/acm/contest/1100/B 题目大意 nnn个点的一棵树,对于每个点求 距离该点不超过kkk的点数 每个点的权值是以该点为起点 ...

  8. 城市微光,大抵如此--爱摸鱼的美工(15)

    -----------作者:天涯小Y 有趣的灵魂藏在社区里 厉害的人打造自己的天地 老街道,新店铺,小日子 下学的孩子欢笑耳语 约会的情侣谈情说爱 三五好友话家长里短 我们谈论柴米油盐,也有诗和远方 ...

  9. 揣着一口袋的阳光满载而归--爱摸鱼的美工(13)

    -----------作者:天涯小Y 揣着一口袋的阳光满载而归! 慷懒周末 睡到自然醒,阳光洒在书桌上 套进宽松自在的衣服里 出门,去楼下坐坐 在阳光里吃午餐 在阳光里打个盹 在阳光里看猫咪上蹿下跳 ...

最新文章

  1. 互联网笔试各种主流语言在OJ上的的标准输入输出
  2. Http请求之优雅的RestTemplate
  3. 系统动力学9种模型_软工国际标准专栏(9)|系统和软件质量模型
  4. datepicker不能选择是为什么_为什么客厅不好看?休闲椅选错了
  5. JAVA入门级教学之(Object类中的equals方法)
  6. android中虚拟程序停止,为什么我的在虚拟机运行后出现应用程序停止运行
  7. 各种内部排序算法,C#实现
  8. 【C语言】数组(详细讲解+源码展示)
  9. 设置Chrome为兼容模式
  10. LT8911EXB:MIPI CSI/DSI转EDP信号转换芯片-润百信科技提供技术批量支持
  11. 2022年,人工智能和数据发展呈现哪五大趋势?
  12. 大数据学习路线-入门精简
  13. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式...
  14. C语言娱乐项目————4、一箭双心
  15. InSAR学习(五)高级的InSAR技术:PS技术和SBAS技术
  16. Oracle 常用的字符型函数
  17. 新萝卜家园 Ghost XP SP3 装机至尊版 2013.04
  18. 森海塞尔PXC 250主动降噪耳机静静地在努力!
  19. 专家预言未来机器人性XX爱OO或成常态,并利于身心健康
  20. 令人智熄的智(zhi)能(zhang)蛇

热门文章

  1. 740. Delete and Earn
  2. [Leetcode][第1025题][JAVA][除数博弈][数学][递推]
  3. 5d4的白平衡模式_佳能5D4/5D3/6D2系列中高端单反相机和全画幅微单EOS R专题系列课程...
  4. 数组的合并和升序排列_leetcode No.31 下一个排列
  5. decimal这个数据类型的用法,保证你看懂
  6. base64 转文件_PHP伪协议与文件包含
  7. 使用rpm包升级ntpd服务_服务器准备升级,小程序将暂停使用
  8. python的web可视化_Python的Web可视化框架Dash(8)---核心组件
  9. 3.6.4python下载安装教程_python 3.6.4安装教程
  10. NSIS 查找文件是否存在,并设置安装路径