博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
暑假训练Day6
阅读量:4647 次
发布时间:2019-06-09

本文共 945 字,大约阅读时间需要 3 分钟。

1.

费马小定理:\(a^{-n}\) \(mod\) \(p=a^{p-n-1}\) \(mod\) \(p\)\(p\)为质数)

由题目可知\(β=V/E\),而结果要求我们对\(β\)排序后取余,即求$α=β $ \(mod\) \(N (N=1e9+7)\)

所以很容易根据上面的公式推导出\(α=V*E^{p-2}\) \(mod\) \(p\)

接下来就可以用快速幂的取余算法算出\(E^{p-2}\) \(mod\) \(p\)(),最后再乘\(V\)就可以得到\(α\)

虽然比赛的时候各种查资料写出了这个算法,但是读题不仔细,没有注意到要对\(α\)进行排序输出。

而且这道题在排序输出上面也放置了陷阱,需要先算\(β\)的值,并进行排序,而且排序算法应当对等号两边移向进行乘法比较,避免误差。

赛后AC代码:

#include
using namespace std;typedef long long LL;const LL N = 1e9 + 7;//定义余数const int MAXN = 2e5 + 5;//定义结构体数组大小struct Node{ LL x, y;}num[MAXN];bool cmp(Node a1, Node a2){ return a1.y*a2.x>a2.y*a1.x;//移向乘法}LL fun(LL a, LL t);//快速幂取余int main(){ int k; LL a, b; cin >> k; for (int i = 0; i
0) { if (t & 1) { ans *= base; ans %= N; } base *= base; base %= N; t >>= 1; } ans = (ans + N) % N; return ans;}

转载于:https://www.cnblogs.com/JMWan233/p/11142716.html

你可能感兴趣的文章
Lambda--持续学习中
查看>>
简单谈谈面向对象和面向过程的区别
查看>>
Intellij IDEA 配置Tomcat远程调试
查看>>
python3 进程和线程(一)
查看>>
python-综合练习题(if条件语句,while循环,奇数偶数
查看>>
C语言基础-第三章
查看>>
PowerDesigner教程系列(一)概念数据模型
查看>>
Memcached 总结 启动多个Memcached服务 配置文件详解
查看>>
python常用类库总结
查看>>
mybatis设定全局变量
查看>>
Pumping lemma
查看>>
软工第四次作业
查看>>
学习"大众点评网的架构设计与实践"
查看>>
.Net文件压缩
查看>>
scala函数式编程
查看>>
窥探 Swift 之 函数与闭包的应用实例
查看>>
#define和预编译指令
查看>>
Swift - 滚动视图(UIScrollView)的用法
查看>>
榨汁机食谱大全
查看>>
Git学习——把文件推送到远程仓库
查看>>