多组数据,给定质数 \(p\) ,求所有 \(x\) 使得 \(f(x)=\min_{k=2}^x f(k)\) ,其中 \(f(x)=x^{-1}\)

所有 \(p\) 在 \([1,10^9]\) 中均匀选取

Solution

显然逆元序列有对称关系

于是枚举到根号,后面一半对称输出即可

我为什么被这个题卡了一个小时

一开始枚举边界写的是 \(\sqrt p\) 怎么都过不去

后来发现我可能是个沙茶

#include <bits/stdc++.h>
using namespace std; #define int long long int a[1000005],p,t; signed main() {
ios::sync_with_stdio(false);
cin>>t;
while(t--) {
cin>>p;
vector <pair<int,int> > v;
int lim=sqrt(p);
a[1]=1;
int mx=1e9,pos=1;
for(int i=2;i<=p;i++) {
a[i]=-(p/i)*a[p%i],
a[i]=(a[i]%p+p)%p;
if(i>=a[i]) break;
mx=min(mx,a[i]);
if(mx==a[i]) {
if(i<a[i])
v.push_back(make_pair(i,a[i]));
}
}
int flag=0;
if(sqrt(p+1) == (int)sqrt(p+1)) flag=1;
cout<<2*v.size()+flag<<endl;
for(int i=0;i<v.size();i++) cout<<v[i].first<<" "<<v[i].second<<endl;
if(flag) cout<<(int)sqrt(p+1)<<" "<<(int)sqrt(p+1)<<endl;
for(int i=v.size()-1;i>=0;--i) cout<<v[i].second<<" "<<v[i].first<<endl;
}
}

最新文章

  1. Key/Value存储系统etcd的特性
  2. Maven学习总结(九)——使用Nexus搭建Maven私服
  3. Web安全开发注意事项
  4. 通过PowerShell查询本机IP地址
  5. poj 2594 Treasure Exploration(最小路径覆盖+闭包传递)
  6. [Express] Level 2: Middleware -- 2
  7. VS编译出现 HTTP 错误 403.14 - Forbidden 决绝办法
  8. Java写程序猿专访String2
  9. [Phonegap+Sencha Touch] 移动开发24 包wp8.1的App,弹出软键盘输入框聚焦实施后,无移动采收率方法来解决接口
  10. [最短路]P1078 文化之旅
  11. 《精通Linux C编程》1.3Linux系统的常用命令-笔记
  12. MongoDB入门系列(三):查询(SELECT)
  13. MySQL5.5 安装配置方法教程
  14. HTMLTestRunner 美化版本
  15. Web GIS系统相关
  16. 14,EasyNetQ-使用EasyNetQ.Hosepipe重新提交错误消息
  17. 高级架构进阶之HashMap源码就该这么学
  18. EFCore中SQLSERVER 2008 的分页问题
  19. Navicat for oracle cannot load OCI DLL
  20. 【Docker】通过cookie欺骗在ubuntu中使用wget下载jdk

热门文章

  1. golang函数 和 条件语句
  2. 数据算法 --hadoop/spark数据处理技巧 --(1.二次排序问题 2. TopN问题)
  3. lua 打印一个table的实现
  4. ASP.NET Core ResponseCache进行缓存操作
  5. JMeter接口测试响应数据中乱码问题解决方法
  6. codewars--js--counting duplicates
  7. python基础入门之四 —— 列表
  8. SVN状态图标不显示的解决办法
  9. C#中StreamReader类读取文件使用示例
  10. Bellman-ford算法 无向图