链接:https://www.nowcoder.com/acm/contest/90/F
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

给定n,求1/x + 1/y = 1/n (x<=y)的解数。(x、y、n均为正整数)

输入描述:

在第一行输入一个正整数T。接下来有T行,每行输入一个正整数n,请求出符合该方程要求的解数。(1<=n<=1e9)

输出描述:

输出符合该方程要求的解数。
示例1

输入

3
1
20180101
1000000000

输出1

5
181

思路:1/x + 1/y = 1/n  ->  xn + yn - xy = 0 -> xn + yn - xy + n^2 = n^2 ->(x - n)*(y - n) = n^2 所以问题转化为求n^2的两个因数相乘的种类,所以要先求出n^2的质因数有哪些,并且n^2 = n*n所以n^2的因数和n的因数相同,且个数为n的两倍。
#include <bits/stdc++.h>
using namespace std;
int num[100];int main(){int t;cin >> t;while(t--){memset(num, 0, sizeof(num));int n, q = 1; cin >> n;for(int i = 2; i * i <= n; i++){ if(n % i == 0){while(n % i == 0){num[q]++;n /= i;}q++;}}
//      cout << "q: " <<  q << endl;if(n != 1){    //如果上面的for循环条件是 i * i <= n就要这个; 因为我们是从2开始枚举的,对于一个质数,它本身和1构成了一个 num[q]++;  //在那个条件下会被pass的,例如 n = 20时;20 -> 10 -> 5,就会被退出,故最后考虑下退出后的n值,即可,并且//只会是本身,否则n除以他不为1,会在2到sqrt(n)的遍历时发现的。 q++;}
//      cout << "q: " << q << endl;for(int i = 0; i < q; i++)num[i] *= 2;    //存储n*n因数,相当于两倍的n的因数int ans = 1;for(int i = 0; i < q; i++) ans *= (num[i] + 1);  //每个质因数可以出的个数为:0, 1, 2..num[i], 现在分成两部分,一部分来选的话,//他每个质数可选的个数的乘积即为可选的种类 cout << (ans + 1) / 2 << endl; //由于x,y有大小关系,故满足的情况只有一半,可以相等,加一向上取整 } return 0;
}

  



转载于:https://www.cnblogs.com/zhumengdexiaobai/p/8644257.html

27-1/x+1/y=1/n相关推荐

  1. 下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf(“x=%d,y=%d“,x,y); A)x=27,y=27 B)x=12,y=

    下面程序段的运行结果是: for(y=1;y<10;) y=((x=3*y,x+1),x-1); printf("x=%d,y=%d",x,y); A)x=27,y=27 B ...

  2. 懂得了这些才可以说学习Python入门了

    今天小编和小伙伴们分享一下我自己学习Python的一些理解.相信已经很多人听说过Python这个词,它对于我们来说已经不陌生了,根据TIOBE最新排名,Python已超越C#,与Java,C,C++成 ...

  3. mysql主从配置安装_mysql主从配置完整版(二进制安装)

    系统基础 centos6.5 mysql5.6 防火墙关闭,目录挂载等 fdisk /dev/sdb vgcreate datavg /dev/sdb1 lvcreate -L 99G -n data ...

  4. 十字相乘法c语言,十字相乘法的运算方法

    --借助画十字 分解系数,从而把二次三项式分解 的方法叫做 . 是二次三项式分解 的一种常用方法,它是先将二次三项式 的 a及常数项c都分解为两个因数的乘积(一般会有几种不同的分法) 然后按斜线交叉相 ...

  5. [SimpleOJ238]宝藏探寻

    题目大意: 给你一棵带点权的n个结点的树,有m次询问,每次从树上删掉一条路径(u,v),问删掉每条路径后各个连通块权值和的平方之和. 每次询问是独立的. 思路: 首先对树遍历一遍求出每棵子树的权值和. ...

  6. 第28篇 js中let和var

      let与var 在js中声明一个变量除了一个var 还有一个let的声明.对于var 在前面的作用域中已经讲过,这次主要说下二者的区别: 在MDN上有这样的一个demo: var list = d ...

  7. 第166天:canvas绘制饼状图动画

    canvas绘制饼状图动画 1.HTML 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 < ...

  8. bzoj3600 没有人的算术

    查询可以直接线段树维护,修改呢,考虑一颗替罪羊,每个点代表一段区间,他的$val$就是区间中值,线段树记录对应节点的$id$,再开一个数组记录即时的权值,因为重建时$val$可能会变.这好像是重量平衡 ...

  9. ZZNU 1993: cots' friends

    题目描述 cot 最近非常喜欢数字, 喜欢到了什么程度呢, 已经走火入魔了.... cot把每个朋友编上一个序号,然后遇到谁就叫"XX号",对此,他的朋友们一致认为cot" ...

  10. 第三次组队赛 (DFSBFS)

    网站:CSUST 8月1日 先总结下,不得不说死的很惨,又是第三就不说了,一共7道题,AC了5道,但是有一个组三个人是做的个人赛,有两人AK了.......Orz,然后深搜还是大问题,宽搜倒是不急了. ...

最新文章

  1. Xcode_7_GM_seed.dmg下载
  2. Design Pattern - Service Locator Pattern--转载
  3. 为什么方差的自由度是n-1啦?
  4. git个人使用总结 —— idea命令行、撤销commit (未完待续)
  5. D. Anton and Chess 模拟题 + 读题
  6. LeetCode 1282. 用户分组(桶排序思想)
  7. 应用宝认领应用签名_腾讯应用宝认领应用步骤
  8. linux iptables_linux 开启独立iptables日志
  9. java中的小知识点
  10. 隐藏iframe实现无刷新的效果
  11. Atitit Major island groups and archipelagos 主要的岛群和群岛目录资料目录1. 岛群 波利尼西亚(Polynesia, 美拉尼西亚(Melanesia,
  12. hibernate历史版本下载
  13. 合并两个有序数组(C语言)
  14. 【项目管理】 --- 范围说明书的内容和作用
  15. 能播放qlv格式的android软件,QLV用什么播放器 腾讯QLV转换MP4方法
  16. UI——无限轮播图和分栏控制器
  17. 使用PS给PDF文件加水印
  18. bzoj4998 星球联盟
  19. PL/SQL 创建定时任务
  20. 2022年哪些浏览器安全、速度快、好用又不卡?

热门文章

  1. Django最新版(1.10.5)在SAE上面部署流程
  2. MySQL 5.5 到MySQL 5.6半同步复制(SSL)
  3. 苹果发布新应用Find My Friends,轻松追踪朋友和家人的所在位置
  4. Mysql创建用户和给用户授权
  5. 使用Genymotion Android模拟器无法连接电脑本机的服务器
  6. 税收征管信息系统_聚焦湖北税收征管信息系统正式切换上线啦! 首日办理业务逾26万件...
  7. 深入理解docker graph driver - DeviceMapper
  8. 【去重和排序】同一个list下,Map或对象内相同属性值取另一个属性值的最小值或最大值
  9. Informix 11.5 SQL 语句性能监控方法及实现
  10. Jboss jar包冲突及jar加载顺序