第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-等式(求$N^2$的因子个数)
一、题目链接
https://www.nowcoder.com/acm/contest/90/F
二、题面
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 给定n,求1/x + /y = /n (x<=y)的解数。(x、y、n均为正整数) 输入描述: 在第一行输入一个正整数T。 接下来有T行,每行输入一个正整数n,请求出符合该方程要求的解数。 (<=n<=1e9) 输出描述: 输出符合该方程要求的解数。 示例1 输入 输出
三、思路
由$\frac{1}{x} + \frac{1}{y} = \frac{1}{n}$,可推得:$x * n + y * n = x * y$,进一步可推得:$x*y-x*n-y*n+n^2 = n ^ 2$,即:$(x-n)(y-n)=n^2$。
题目要计算满足$x \le y$的解的个数。那么,从式子$(x-n)(y-n)=n^2$可以看出,$(x-n)(y-n)$相乘为$n^2$,即只要满足$n^2\ \% (x-n) = 0, n^2\ \% (y-n) = 0$就行。也就是,只要$(x-n)$和$(y-n)$为$n^2$的因子且$x \le y$就行了。
现在要计算$n^2$的因子个数,假设$f(n)$表示$n$的因子个数(下同)。比赛过程中,我尝试过打表,寻找$f(n)$和$f(n^2)$之间的关系,然而没找到。T_T。后来发现了这个公式:http://www.cnblogs.com/565261641-fzh/p/8641852.html。那么,$f(n^2) = f(p_1^{e_1^2} * p_2^{e_2^2} * p_3^{e_3^2} * \cdots * p_k^{e_k^2}) = (1+e_1^2) * (1+e_2^2) * (1+e_3^2) * \cdots * (1 + e_k^2)$。
另外需要注意的一点是,在分解$n$的质因子时,如果最后$n>1$,结果还需要乘以$(1 + 1 * 2)$即乘以$3$。解释一下,第一个$1$是上面的上述公式里面的;第二个$1$是$n = n^1$指数上的$1$,$2$也是上述公式里面的。
所求答案即为$\frac{f(n^2) + 1}{2}$。加$1$的原因是因为$n$在计算$f(n^2)$的过程中只算了一次。
四、源代码
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
;
template <class T> inline void read(T &x) {
int t;
bool flag = false;
')) ;
';
+ t - ';
if(flag) x = -x;
}
vector<int> ps;
];
void init() {
fill(, );
ps.clear();
] = ] = false;
; i < ; ++i) {
if(is[i]) {
; j += i)is[j] = false;
}
}
; i < ; ++i) {
if(is[i])ps.push_back(i);
}
}
LL calc(LL n) {
LL res = ;
;
; i * i <= n && idx < ps.size(); ++i) {
) {
;
) {
cnt++;
n /= ps[idx];
}
res *= ( + cnt * );
}
idx++;
}
)res *= ;
return res;
}
int main() {
#ifndef ONLINE_JUDGE
//freopen("input.txt", "r", stdin);
#endif // ONLINE_JUDGE
init();
LL n;
int T;
for(scanf("%d", &T); T--;) {
scanf("%lld", &n);
printf() / );
}
;
}
第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-等式(求$N^2$的因子个数)的更多相关文章
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛
拖了好久了 链接:https://www.nowcoder.com/acm/contest/90/A来源:牛客网 跳台阶 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K, ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--L-用来作弊的药水
链接:https://www.nowcoder.com/acm/contest/90/L 来源:牛客网 1.题目描述 -- 在一个风雨交加的夜晚,来自异世界的不愿透露姓名的TMK同学获得了两种超强药水 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--E-回旋星空
链接:https://www.nowcoder.com/acm/contest/90/E 来源:牛客网 1.题目描述 曾经有两个来自吉尔尼斯的人(A和C)恋爱了,他们晚上经常在一起看头上的那片名为假的 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--D-psd面试
链接:https://www.nowcoder.com/acm/contest/90/D 来源:牛客网 1.题目描述 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--G-旋转矩阵
链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 1.题目描述 景驰公司自成立伊始,公司便将“推动智能交通的发展,让人类的出行更安全,更高效,更经 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--A-跳台阶
链接:https://www.nowcoder.com/acm/contest/90/A 来源:牛客网 1.题目描述 小明在坐景驰科技研发的无人车到达了目的地. 景驰科技(JingChi.ai)是一家 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛 G 旋转矩阵 【模拟】
链接:https://www.nowcoder.com/acm/contest/90/G 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛.B.跳一跳,很简单的(Hash 倍增)
题目链接 首先变换的周期是\(26\),而所有字符是同时变的,所以一共就只有\(26\)种树,我们对\(26\)棵树分别处理. 求某节点到根路径上的字符串,可以从根往下哈希,\(O(n)\)预处理出. ...
- 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛----随手记录帖
这是跟学长学姐组队来打的最爽的一次比赛了,也可能是互相组队最后一次比赛了,南哥和楼学姐,省赛之后就退役了,祝他们能考研和面试都有happy ending! 虽然最后没有把F题的n^2约数的数学题写完, ...
随机推荐
- hdu KiKi's K-Number 主席树
KiKi's K-Number Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- codeforces 9 div2 C.Hexadecimal's Numbers 暴力打表
C. Hexadecimal's Numbers time limit per test 1 second memory limit per test 64 megabytes input stand ...
- linux突然断电重启,配置文件丢失/程序无法打开/文件损坏
电脑突然断电,重新开机后发现有的程序无法正常启动,原因是配置文件损坏了.感觉奇怪,为什么在硬盘里的文件会内容丢失? 1.可能:写数据的过程被中断,只完成了一部分.可能会出现乱码(因为只写了几个字节,不 ...
- mysql导入source数据库
首先要确保数据库存在,如果不存在则创建 方法1 source 很智能,很方便,很快捷. # mysql -uroot -p Enter password: Welcome to the MySQL m ...
- Command(命令)
意图: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作. 适用性: 抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(call ...
- SpringBoot在启动时的多环境配置以及加载顺序
通常我们在开发完成一个SpringBoot项目时,总是要打包部署的. 在启动SpringBoot应用时,我们常常会使用命令java -jar xxx.jar来启动这个服务. 命令java -jar 除 ...
- 类的成员变量修饰 const 和static
类型 初始化方式 类内(声明) 类外(类实现文件) 构造函数中 构造函数的初始化列表 非静态非常量数据成员 N N Y Y 非静态常量数据成员 N N N Y (must) 静态非常量数据成员 N Y ...
- FastJson/spring boot: json输出方法二
1.引入FastJson依赖包 <!-- FastJson --> <dependency> <groupId>com.alibaba</groupId> ...
- go_install_x_from_github.sh 从 github 安装 go x tools
bash go_install_x_from_github.sh #!/bin/bash set +e # set -x echo 'GO Utilities: Install golang.org/ ...
- ASP.NET常用的指令
指令的类型 指令 说明 Application 配置全局应用程序类 Assembly 注册用在Web窗体中的程序集.建议不使用此指令.而是NuGet. Control 配置用户控件 Implement ...