Little Difference Gym - 101612L 思维
题意:
给你一个数n,你需要输出它可以由那几个数相乘构成,我们设可以由x个数构成,这x个数中最小值为minn,最大值为maxx,那么要求maxx-minn<=1
问你满足上面要求的情况有多少种。如果一个数的构成方式由无数种就输出-1
样例解释:
输入:
12
输出:
3
1 12
3 2 3 2
2 4 3
12有三种满足题意的构成方式,分别是12、2*3*2、4*3
输入
1
输出
-1
因为1的构成可以是1、1*1、1*1*1、1*1*1*1无数种
题解:
你会发现输出-1的情况都是2的次幂,例如1、2、4、8、16.特判一下就可以了
其他情况首先n本身算一次。后面就是两个数相乘得到n,这种情况设定x=sqrt(n)
判断一下x*x==n、x*(x-1)==n、x*(x+1)==n
之后就是多个数相乘(大于两个),n最大是1e18,那么我们枚举1到n1/3的所有数,判断就可以
代码:
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 1e4 + 5;
const int mod = 1000000007;
vector<ll>r[maxn],que;
int main()
{
ll n;
freopen("little.in","r",stdin);
freopen("little.out","w",stdout);
scanf("%lld",&n);
if((n&(-n))==n)
{
printf("-1\n");
return 0;
}
ll pos=0;
//que.push_back(1);
que.push_back(n);
r[pos]=que;
pos++;
que.clear();
for(ll i=2;i*i*i<=n;++i)
{
ll tmp=n;
if(tmp%i==0)
{
while(tmp%i==0)
que.push_back(i),tmp/=i;
while(tmp%(i+1)==0)
que.push_back(i+1),tmp/=(i+1); if(tmp==1)
{
r[pos]=que;
pos++;
}
que.clear();
}
}
ll tmp=sqrt(n);
if(tmp*tmp==n)
{
que.push_back(tmp);
que.push_back(tmp);
r[pos]=que;
pos++;
que.clear();
}
if(tmp*(tmp+1)==n)
{
que.push_back(tmp);
que.push_back(tmp+1);
r[pos]=que;
pos++;
que.clear();
}
if(tmp*(tmp-1)==n)
{
que.push_back(tmp);
que.push_back(tmp-1);
r[pos]=que;
pos++;
que.clear();
}
printf("%lld\n",pos);
for(ll i=0;i<pos;++i)
{
ll len=r[i].size();
printf("%lld ",len);
for(ll j=0;j<len-1;++j)
{
printf("%lld ",r[i][j]);
}
printf("%lld\n",r[i][len-1]);
}
return 0;
}
Little Difference Gym - 101612L 思维的更多相关文章
- Gym - 101981E 思维
Gym - 101981EEva and Euro coins 题意:给你两个长度皆为n的01串s和t,能做的操作是把连续k个相同的字符反转过来,问s串能不能变成t串. 一开始把相同的漏看了,便以为是 ...
- Problem D. Berland Railroads Gym - 101967D (思维)
题目链接:https://cn.vjudge.net/contest/274029#problem/D 题目大意:给你0-9每个数的个数,然后让你找出最大的数,满足的条件是任意三位相连的都能被三整除. ...
- Simple Robot Gym - 101102I (思维)
SaMer is building a simple robot that can move in the four directions: up (^), down (v), left (<) ...
- Equal Numbers Gym - 101612E 思维
题意: 给你n个数vi,你有k次操作.每一次操作你可以从n个数里面挑一个数,然后使得这个数乘于一个正整数.操作完之后,这n个数里面不同数的数量就是权值.你要使得这个值尽可能小. 题解: 如果a%b== ...
- Consonant Fencity Gym - 101612C 暴力二进制枚举 Intelligence in Perpendicularia Gym - 101612I 思维
题意1: 给你一个由小写字母构成的字符串s,你可以其中某些字符变成大写字母.如果s中有字母a,你如果想把a变成大写,那s字符串中的每一个a都要变成A 最后你需要要出来所有的字符对,s[i]和s[i-1 ...
- UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There Was One / POJ 3517 And Then There Was One / Aizu 1275 And Then There Was One (动态规划,思维题)
UVA 1394 And Then There Was One / Gym 101415A And Then There Was One / UVAlive 3882 And Then There W ...
- 思维题 Gym 100553A Alter Board
题目传送门 /* 题意:一个n×m的矩形,相邻的颜色不同,黑或白.问最少的翻转次数,每次翻转可指定任意一个子矩形 思维题:最少要把偶数行和列翻转,也就是n/2+m/2次 */ #include < ...
- ACM: Gym 101047K Training with Phuket's larvae - 思维题
Gym 101047K Training with Phuket's larvae Time Limit:2000MS Memory Limit:65536KB 64bit IO F ...
- K - Subarrays OR Gym - 102152K (思维)
题目链接: K - Subarrays OR Gym - 102152K 题目大意:T组测试样例,然后n个数,让你求每一个l,r中有多少个不同的异或值. 具体思路: 对于(1,i)这个区间, 我们当前 ...
随机推荐
- 【C++】《C++ Primer 》第四章
第四章 表达式 一.基础 重载运算符:当运算符作用在类类型的运算对象时,用户可以自行定义其含义. 左值和右值: C中:左值可以在表达式左边,右值不能. C++中:当一个对象被用作右值的时候,用的是对象 ...
- linux常用命令--转载
转载自: https://www.cnblogs.com/Qsunshine/p/10402179.html 常用指令 ls 显示文件或目录 -l列出文件详细信息l(list) -a列出当前目录下所有 ...
- 【JS学习】String基础方法
前言:本博客系列为学习后盾人js教程过程中的记录与产出,如果对你有帮助,欢迎关注,点赞,分享.不足之处也欢迎指正,作者会积极思考与改正. 目录 定义: 字符串的连接: 标签模板的使用: 字符串的基本方 ...
- QA职责
- InheritableThreadlocal使用问题排查
背景 在做一个微服务系统的时候,我们的参数一般都是接在通过方法定义来进行传递的,类似这样 public void xxx(Param p, ...){ // do something } 然后这时有个 ...
- 关于spring-data与elasticsearch的使用,自定义repository
之前没有使用过spring-data,关于spring-data有很多很棒的设计,例如仅仅只需要声明一个接口就行,你甚至都不需要去实现,spring-data有内置默认的实现类,基本就上完成绝大多数对 ...
- Poj-P1088题解【动态规划/记忆化搜索】
本文为原创,转载请注明:http://www.cnblogs.com/kylewilson/ 题目出处: http://poj.org/problem?id=1088 题目描述: 区域由一个二维数组给 ...
- .NET Core 问题记录
前言: 最近在项目中遇到了遇到了写部署步骤过多的问题,为了减少.net core项目部署步骤:需要对一些基础问题进行验证: 如端口设置.单页应用程序(angluar)合并部署方式等相关问题,特将解决过 ...
- three.js cannon.js物理引擎地形生成器和使用指针锁定控件
今天郭先生说一说使用cannon.js物理引擎绘制地形和使用指针锁定控件.效果如下图.线案例请点击博客原文. 这里面的生成地形的插件和指针锁定控件也是cannon.js的作者schteppe封装的,当 ...
- tail -f 在对文件进行动态追踪时失效的问题
在我是用 tail -f file.txt 对这个文件进行动态追踪时: 我重新打开一个新的终端进行vim编辑这个文件并且保存 这是我们发现,tail -f file.txt'动态追踪的这个文件没有任何 ...