思路讲解
__int128大概可以表示1.7e38大小的数

AC代码
1 |
|
__int128大概可以表示1.7e38大小的数

1 | #include <bits/stdc++.h> |
给你一个正整数N。判断是否存在一对正整数(x,y),使得x3−y3=N.如果存在这样的一对,请打印这样的一对(x,y)。
这个形式还是很简单的,但是字少,可能还是比较难的。这其实也算是一个丢番图方程。
根据数理逻辑,非线形丢番图方程一般无法直接求解,所以基本靠枚举去解。

暴力枚举d即可,d的上界是N1/3,1e6,是可以解决的。
然后这道题目上界比较大
https://atcoder.jp/contests/abc397/submissions/64414819
1 | // Problem: D - Cubes |
1 | ceil(pow((long double)N,(double)1/3)); |
小心C++隐式类型转换
还是要再想一会,因为洛谷标签里只有树状数组。
说明理论上来说,你只要会求逆序对就会这题?但愿如此。
其实还是不难的,多写吧,写下来,你自然就懂了

现在的问题就在于怎么求这两个东西了。但其实很简单,因为他们在old里是0(最小的),在new里是m-1(最大的)
https://atcoder.jp/contests/abc396/submissions/64400231
1 | // Problem: F - Rotated Inversions |
我们计算机嘛,这个推导对于我来说还是有点难了,不过结论很简单,就是b^(m-2)为其乘法逆元。
当然,你会说这个乘法逆元有什么用? AcWing 886. 费马小定理, 快速幂, 求组合数 II
这不求组合数就有用了吗!
参考以下题解
https://www.acwing.com/solution/content/16482/

https://www.acwing.com/problem/content/submission/code_detail/40913617/
1 | // Problem: 快速幂求逆元 |
参考以下题解
https://www.acwing.com/solution/content/15293/
这里有一个非递归写法
https://www.acwing.com/solution/content/16482/
https://www.acwing.com/problem/content/submission/code_detail/40911595/
1 | // Problem: 快速幂 |