#约数#洛谷 4296 [AHOI2007]密码箱
题目
给定\(n(n\leq 2*10^9)\),求
\]
分析
首先当\(n=1\)的时候需要特判,
否则1和\(n-1\)一定是答案,
那么对于一个\(x=x'+1\)来说,也满足
\((x'+1)^2\bmod n==1\)
把这个式子拆开可以得到
\(x'(x'+2)\bmod n==0\)
那么考虑枚举\(n\)中\(\geq\sqrt{n}\)的约数,
那么\(x'\)或者\(x'+2\)一定是这个数的倍数,
再枚举这个约数的倍数判断是否满足上式即可,
再通过\(x'\)就可以推出\(x\)了
PS:为什么不直接枚举\(n\)的约数?
因为\(<\sqrt{n}\)的约数所对应的另一个数也就是\(>\sqrt{n}\)的约数
当枚举\(\geq\sqrt{n}\)的约数的倍数,
如果满足上式也就说明
\(x',x'+2\)的另一个数就是\(\leq\sqrt{n}\)的约数的倍数
而枚举\(\leq\sqrt{n}\)的倍数显然会T飞,
那还不如只枚举\(\geq\sqrt{n}\)的约数的倍数,
时间复杂度不会证,也许是\(O(\sqrt{n}\log{n})\)吧
代码
#include <cstdio>
#include <algorithm>
#define rr register
using namespace std;
int n,m,a[100011];
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
signed main(){
scanf("%d",&n),a[1]=1,a[m=2]=n-1;
if (n==1) return !printf("None");
for (rr int i=2;i*i<=n;++i)
if (n%i==0){
for (rr int j=n/i;j<n;j+=n/i){
if (1ll*j*(j+2)%n==0) a[++m]=j+1;
if (1ll*j*(j-2)%n==0) a[++m]=j-1;
}
}
sort(a+1,a+1+m),m=unique(a+1,a+1+m)-a-1;
for (rr int i=1;i<=m;++i) print(a[i]),putchar(10);
return 0;
}
#约数#洛谷 4296 [AHOI2007]密码箱的更多相关文章
- 洛谷——P4296 [AHOI2007]密码箱
P4296 [AHOI2007]密码箱 密码x大于等于0,且小于n,而x的平方除以n,得到的余数为1. 求这个密码,$1<=n<=2,000,000,000$ 暴力枚举,数据有点儿水$O( ...
- 【题解】洛谷P1463 [POI2002][HAOI2007] 反素数(约数个数公式+搜索)
洛谷P1463:https://www.luogu.org/problemnew/show/P1463 思路 约数个数公式 ai为质因数分解的质数的指数 定理: 设m=2a1*3a2*...*pak ...
- 【题解】洛谷P1445 [Violet]樱花 (推导+约数和)
洛谷P1445:https://www.luogu.org/problemnew/show/P1445 推导过程 1/x+1/y=1/n! 设y=n!+k(k∈N∗) 1/x+1/(n!+k)=1 ...
- 洛谷 P4902 乘积 (约数筛,前缀和(积))
洛谷P4902乘积 题意简述: 给 $ t $ 组 $ (a,b) $ 求: $ \prod_{i=A}^{B}\prod_{j=1}^{i}(\frac{i}{j})^{\lfloor \frac{ ...
- LOJ #2185 / 洛谷 P3329 - [SDOI2015]约数个数和(莫比乌斯函数)
LOJ 题面传送门 / 洛谷题面传送门 题意: 求 \(\sum\limits_{i=1}^n\sum\limits_{j=1}^md(ij)\),\(d(x)\) 为 \(x\) 的约数个数. \( ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷P1120 小木棍
洛谷1120 小木棍 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长 ...
- BZOJ 1406: [AHOI2007]密码箱( 数论 )
(x+1)(x-1) mod N = 0, 枚举N的>N^0.5的约数当作x+1或者x-1... ------------------------------------------------ ...
- 洛谷4月月赛R2
洛谷4月月赛R2 打酱油... A.koishi的数学题 线性筛约数和就可以\(O(N)\)了... #include <iostream> #include <cstdio> ...
- 洛谷P2480 [SDOI2010]古代猪文(费马小定理,卢卡斯定理,中国剩余定理,线性筛)
洛谷题目传送门 蒟蒻惊叹于一道小小的数论题竟能涉及这么多知识点!不过,掌握了这些知识点,拿下这道题也并非难事. 题意一行就能写下来: 给定\(N,G\),求\(G^{\sum \limits _{d| ...
随机推荐
- React Native如何每次唤醒APP都执行一段代码
最近想要做一个类似于淘宝每次打开会根据用户剪贴板内容弹出对应商品的功能.要完成这个功能需要每次唤醒APP都读取一次剪贴板. 1.监听 && 销毁 1 async componentDi ...
- django学习第十五天-modelform的补充
基于form组件和modelform组件改造图书管理系统 详情可以去图书管理系统分类中查看 基于form组件和modelform组件改造图书管理系统 modelform的补充 class BookMo ...
- 第123篇: JS函数属性与方法
好家伙,本篇为<JS高级程序设计>第十章"函数"学习笔记 ECMAScript 中的函数是对象,因此有属性和方法. 1.函数属性 每个函数都有两个属性:length 和 ...
- 如何在 C# 中以编程的方式将 CSV 转为 Excel XLSX 文件
前言 Microsoft Excel的XLSX格式以及基于文本的CSV(逗号分隔值)格式,是数据交换中常见的文件格式.应用程序通过实现对这些格式的读写支持,可以显著提升性能.在本文中,小编将为大家介绍 ...
- 基于Python的 如何检查字符串输入是否为数字
一 概念 这种有很多常用的方法,这里只介绍一种常用的方法是使用正则表达式来匹配数字的模式.通过定义一个匹配数字的正则表达式,然后使用re模块中的search()方法来进行匹配. 二 例子: 下面是一个 ...
- 2024 SemEval 冠军
SemEval Task10,本质是一个文本分类的任务,有三个子任务,论文摘要如下:在多维对话中,情绪不仅作为情感交流的重要中介者,还承载着丰富的信息.因此,准确识别交流者的情绪并理解情绪变化的触发因 ...
- springboot打印启动信息
打印启动信息 转载自:www.javaman.cn 1 spring Bean实例化流程 基本流程: 1.Spring容器在进行初始化时,会将xml或者annotation配置的bean的信息封装成一 ...
- dbVisualizer之中文乱码
在SQL Commander中,sql语句中如果有中文,显示是'口口口'. 解决办法如下: 在Tools->tool Properties->General->Appearance- ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Javabase64macmd5sha 加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实 ...
- SparseTable ST表
Sparse Table ST表是一个静态二维数组st[i][j],作用是快速查询(O(1))区间最值(不只是最值,可重复贡献问题都可以用),st[i][j]代表的是在以引索i为起点,长度为\(2^j ...