题目链接:https://vjudge.net/problem/Gym-101612L

知识点:  数学

题目大意:

  给一个数 \(n(1 \le n \le 10^{18})\),要求将 \(n\) 分解成 \(a^{p}(a+1)^{q}\),问有多少种分解方案。

解题思路:

  如果 \(n\) 可以表示成 \(2^{t}\) 的形式,则有无限种分解方案,因为此时 \(n\) 可以分解成 \(1^{p} \times 2^{t}\) 的形式,其中 \(p\) 可以为任意整数。

  接下来讨论有限种分解方案的情况。

  \(n=a^{p}(a+1)^{q}\) 中的 \(a\) 近似等于 \(\lfloor ^{p+q} \sqrt{n} \rfloor = \lfloor ^{r} \sqrt{n} \rfloor\),其中 \((1 \le r \le log_2(n) \le 64)\),用求出的近似的 \(a\) 和 \(a+1\) 去尝试分解 \(n\) 即可。

AC代码:

 #include <bits/stdc++.h>
using namespace std;
typedef long long LL;
vector<vector<LL> > ans; void solve(LL n,LL a){//试分解函数
vector<LL> ret;
while(n%a==){
ret.push_back(a);
n/=a;
}
while(n%(a+)==){
ret.push_back(a+);
n/=(a+);
}
if(n==){
ans.push_back(ret);
}
}
int main(){
freopen("little.in", "r", stdin);
freopen("little.out", "w", stdout);
LL n;
scanf("%lld",&n);
if((n&(n-))==){ //判断 n 是否是 1<<x 的形式的数
printf("-1\n");
return ;
} solve(n,n);
for(int s=;s<=;s++){
LL r=(LL)pow(n,1.0/(double)s);
for(int j=-;j<=;j++){
if(r+j>)
solve(n,r+j);
}
}
sort(ans.begin(),ans.end());
ans.erase(unique(ans.begin(),ans.end()),ans.end()); //去重 printf("%d\n",ans.size());
for(int i=;i<ans.size();i++){
printf("%d",ans[i].size());
for(int j=;j<ans[i].size();j++){
printf(" %lld",ans[i][j]);
}
printf("\n");
}
return ;
}

  

最新文章

  1. POJ1185 炮兵阵地
  2. noi 2985 数字组合
  3. 解决mac os x下 tomcat启动报 java.net.BindException: Permission denied &lt;null&gt;:80 错误
  4. javassist动态修改class
  5. 【转】vim文件编码和乱码处理
  6. 【菜鸟看框架】——EF怎样自己主动生成实体
  7. Wix学习整理(4)——关于WiX文件格式和案例HelloWorld的分析
  8. Linux epoll总结
  9. Codeforces Round #366 (Div. 2)_C. Thor
  10. Win下 MySQL数据库安装与配置详解
  11. IntelliJ IDEA创建java项目
  12. GO开发[四]:golang函数
  13. javascript排序算法-选择排序
  14. flex 布局 实现电商页面商品展示floor
  15. mysql按天数据统计
  16. day-2 jmeter 操作mysql数据库
  17. WCF 服务应用程序与 服务库之间的区别
  18. 知名网站内部资料:WEB页面内容优化管理与性能技巧
  19. Spring声明式事务为何不回滚
  20. 初探asciinema

热门文章

  1. 微软宣布一批新获得Microsoft Teams认证的会议硬件
  2. 打造更好用的 EF 自动审计
  3. 解析HTML、JS与PHP之间的数据传输
  4. 《C Primer Plus(第6版)中文版》一1.12 复习题
  5. 使用mysqldump自动备份数据库脚本
  6. Java 类类型之 String 类型
  7. 算法竞赛进阶指南--hamilton路径
  8. 图论--2-SAT--HDOJ/HDU 1824 Let's go home
  9. python 安装模块之pip install +模块名的换源写法
  10. libevent(四)event_base 2