[UESTC SC T2] 分解
暂无链接
分解
【题目描述】
给定正整数N,你需要将其分解为若干正整数的乘积,要求分解出的数之间
相差都不超过1。
【输入格式】
第一行一个正整数T,表示数据组数。
接下来T 行,每行一个正整数N,意义如题面所示。
【输出格式】
对于每组数据,首先输出一行,一个整数P,表示有几组可行解,如果有无穷
多组解,输出-1。
若没有无穷多组解,接下来输出P 行,每行首先输出一个正整数M,表示将
N 分解为几个数,接下来输出M 个数,表示分解出的数。
如有多组解,请将分解出的数字从小到大排序,记为序列c1c2...cMc1c2...cMc_1 c_2...c_M,按照该
序列的字典序,将解从小到大输出。
一组解分解出多个数时,请先输出较小的数。
【样例输入】
2
1
12
【样例输出】
-1
3
3 2 2 4
2 3 4
1 12
【数据范围】
对于20%的数据 N≤100
对于40%的数据 N≤10910910^9
对于100%的数据 N≤1018101810^{18},T≤10
题解
当时看错题了,以为分出的因数从小到大相邻两个之间差不大于一。。。果断爆零。
然而,真正的题意是分解出的因数极差不大于一。。。orz瞬间变普及。
所以我们枚举质因数个数,每次先填充对应的次方根,然后根据当前因数乘积填充次方根+1,可以说是非常暴力了。
-1的情况就是2n2n2^n或者0。
另外,开n次方根的时候可以用pow函数,但是指数记得用long double,其他各种地方都开long long,毒瘤出题人。。。
代码
#include<bits/stdc++.h>
#define ll unsigned long long
using namespace std;
ll pow2[64],n,cot,hh[64][64];
void in()
{scanf("%lld",&n);}
void work(int x)
{ll base=(ll)pow(n,(double)1/x);ll ans[64],pro=1;for(int i=1;i<=x;++i)ans[i]=base,pro*=base;for(int i=x;i>=1;--i){if(pro==n)break;pro/=base;pro*=base+1;ans[i]++;}if(pro!=n)return;cot++;hh[cot][0]=x;for(int i=1;i<=x;++i)hh[cot][i]=ans[i];
}
void ac()
{cot=0;if(!n||n==1){printf("-1\n");return;}for(int i=62;i>=1;--i)if(n==pow2[i]){printf("-1\n");return;}for(int i=62;i>=1;--i)work(i);printf("%lld\n",cot);for(int i=1;i<=cot;++i){for(int j=0;j<=hh[i][0];++j)printf("%lld ",hh[i][j]);putchar(10);}
}
int main()
{pow2[0]=1;for(int i=1;i<=63;++i)pow2[i]=pow2[i-1]*2;int T;scanf("%d",&T);for(int i=1;i<=T;++i)in(),ac();return 0;
}
[UESTC SC T2] 分解相关推荐
- 【一周入门MySQL—4】数据库进阶练习
数据库进阶练习 数据库进阶查询练习 素材:来自以下四个Table 数据准备(创建表,导入数据) -- 数据准备,创建Tableuse test;-- 学生表create table stu(s_id ...
- 网络流 小结(更新时间2015/8/8)更新中
国家队集训队论文-网络流(下载链接) 基础知识我就不再累述了,大家百度百科或找某大牛博客看看就好了 下面是摘自某牛(http://www.cnblogs.com/neverforget/archive ...
- mysql中select 的题型_MYSQL经典题型详情解析
学完了mysql后发现有很多地方不是很明白,于是总结了mysql的经典题型,不论是工作还是面试,我相信还是有一定帮助的. 例题一 在我的数据库中数据如下(排序有些差别,但是不影响结果) 分析: ...
- 经典SQL练习——详细到令人发指(未完待续)
最近几次面试,每一次回来都会感到自己的不足. 比如上一次,一家做教育的公司笔试题里有三道数据库题目,都是关于学生和成绩的查询,看着题目我不禁陷入沉思,人家日常用的SQL语句我都写不来的话,那我的数据库 ...
- SQL(之一)-SQL经典题目
说明:以下SQL练习题(主要针对DBMS为ORACLE),题目来自网络,本人整理编辑完成,难度分为1-5星. 涉及的4个表的表间关系: --0-查询每个学生.最高学科的成绩.及最高成绩的所在学科在班级 ...
- 关系数据库、关系代数和关系运算
本文转自:https://blog.csdn.net/alexshi5/article/details/80024250 特别感谢原作者,感觉写得特别清晰,为方便日后学习故转载 **一.关系数据结构及 ...
- MIPS常见指令汇总
MIPS是世界上很流行的一种RISC处理器.MIPS的意思是"无内部互锁流水级的微处理器"(Microprocessor without interlocked piped sta ...
- 数据库练习(学生、课程、选课关系)
有下列三张表,创建表,设置表之间的关系,插入一些值 S (SNO,SNAME)学生关系.SNO 为学号,SNAME 为姓名 C (CNO,CNAME,CTEACHER) 课程关系.CNO 为课程号,C ...
- 数据库(二)—— 关系数据库以及关系代数和关系运算
一.关系数据结构及形式化定义 1.关系 关系模型的数据结构非常简单,只包含单一的数据结构--关系.在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表. 1.1 域 域是一组具有相同数据类型值的集合 ...
- sql练习一(学生,课程,教师,成绩)
学生,课程,教师,成绩各种查询 初始化建表语句 create table Student(SID varchar(10),Sname nvarchar(10),Sage datetime,Ssex n ...
最新文章
- dataset__getitem___一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
- 在线实时大数据平台Storm集成redis开发(分布锁)
- 收藏:asp.net
- 大于小于优化_工程优化设计与Matlab实现——优化设计的数学基础
- 牛客题霸 NC30 数组中未出现的最小正整数
- 你若安好,便是晴天。
- 刚刚,英伟达发布最强无人车AI芯片,以及一系列自动驾驶新产品
- 关于div布局中float的使用
- 新闻简报(7/18)
- 数据清洗工具 OpenRefine简介
- 条码打印软件如何设置双排标签纸尺寸
- 软件架构师必考概念整理
- 1977年发生事件_历史回放:日本1977年海怪尸体事件
- python sqrt(4)*sqrt(9)_Python表达式sqrt(4)*sqrt(9)的值为__________。
- 【拜小白的机器学习】2-机器学习的种类与基本术语概念
- GAPIT 3.0:全基因组关联分析与预测软件最新版发布
- 开关电源的五种纹波噪声如何抑制?
- NBUT 1647 (多校连萌3)
- 计算机专业硕士毕业论文,硕士毕业论文(计算机专业、自动化专业).doc
- 添加布林带择时策略有多便捷!股票量化分析工具QTYX-V2.4.7
热门文章
- 轻松几步完成cisco交换机配置全是干货!
- Raki的读paper小记:Star-Transformer
- python同名函数相互冲突_两个函数同名python
- html空间图片,html+js实现图片预览
- ssh服务器安装测试
- npm i 报错 'match' of undefined 错误以及删除node_modules失败
- nginx-反向代理笔记
- SQL Fundamentals || Single-Row Functions || 数字函数number functions
- JVM监控及诊断工具命令行篇之jinfo
- redis数据类型之String