1406: [AHOI2007]密码箱

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 992  Solved: 576
[Submit][Status][Discuss]

Description

在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子背面刻着的古代图标,就是对密码的提示。经过艰苦的破译,小可可发现,这些图标表示一个数以及这个数与密码的关系。假设这个数是n,密码为x,那么可以得到如下表述: 密码x大于等于0,且小于n,而x的平方除以n,得到的余数为1。 小可可知道满足上述条件的x可能不止一个,所以一定要把所有满足条件的x计算出来,密码肯定就在其中。计算的过程是很艰苦的,你能否编写一个程序来帮助小可可呢?(题中x,n均为正整数)

Input

输入文件只有一行,且只有一个数字n(1<=n<=2,000,000,000)。

Output

你的程序需要找到所有满足前面所描述条件的x,如果不存在这样的x,你的程序只需输出一行“None”(引号不输出),否则请按照从小到大的顺序输出这些x,每行一个数。

Sample Input

12

Sample Output

1
5
7
11
题解: 由题意可知 a*n=x^2-1;
即 a*n=(x+1)*(x-1);
设 n=p*q;(p<q)
则 p|(x+1)&&q|(x-1)或者p|(x-1)&&q|(x+1);
然后枚举一下p,再枚举一下x,用set判重就好了。
最坏的时间复杂度为O(小于sqrt(n)的约数个数*sqrt(n));但其实比这个好很多。
#include<iostream>
#include<cstdio>
#include<set>
#include<cmath>
#include<algorithm>
using namespace std;
int n,a[1000001],u,temp;
set<int> s;
int main()
{cin>>n;for (int i=2;i<=sqrt(n);i++){if (n%i==0){u=n/i;for (int j=u-1;j<=n;j+=u)if ((j-1)%i==0&&s.find(j)==s.end()){a[++a[0]]=j;s.insert(j);}  for (int j=u+1;j<=n;j+=u)if ((j+1)%i==0&&s.find(j)==s.end()){a[++a[0]]=j;s.insert(j);}}}if (s.find(n-1)==s.end()) a[++a[0]]=n-1;a[++a[0]]=1;temp=a[0];sort(a+1,a+temp+1);for (int i=1;i<=temp;i++)printf("%d\n",a[i]);
}
 

【bzoj1406】【AHOI2007】【密码箱】【数论】相关推荐

  1. BZOJ1406: [AHOI2007]密码箱 数论

    Description 在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子背面刻着的古代图标,就是对密码的提示.经过艰苦的破译,小可可 ...

  2. bzoj 1406: [AHOI2007]密码箱

    1406: [AHOI2007]密码箱 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 1629  Solved: 967 [Submit][Status ...

  3. BZOJ 1406 密码箱(数论)

    很简洁的题目.求出x^2%n=1的所有x<=n的值. n<=2e9. 直接枚举x一定是超时的. 看看能不能化成有性质的式子. 有 (x+1)(x-1)%n==0,设n=a*b,那么一定有x ...

  4. 2019.5.summary

    2019.5.1 CF C. Prefix Sum Primes 感觉CF就是训练妳如何养成对题目强大的YY能力的QAQ 我们构造 如果只有一种,没辙,只能这样放 否则先放一个2,再放一个1 接下来把 ...

  5. 算法笔记——数学相关

    算法笔记--数学相关 高精度 乘法逆元 排列组合 二项式定理 质数的判定和应用 约数 拓展欧几里得 大步小步算法(BSGS) 拓展大步小步算法 快速乘和快速幂 矩阵相关 欧拉函数 欧拉定理及费马小定理 ...

  6. 【BZOJ1406】【codevs2478】密码箱,数论练习

    传送门1 传送门2 写在前面:纯洁的污,还要恍然大污 思路: (感觉数论一段时间不做就找不到感觉了呢) 题意就是求x2≡1(mod n)x^2≡1(mod n)在[0,n]上所有的整数解 方程可化为( ...

  7. P4296-[AHOI2007]密码箱【数论】

    正题 题目链接:https://www.luogu.com.cn/problem/P4296 题目大意 一个数字nnn,求有多少个x<nx<nx<n使得x2%n=1x^2\%n=1x ...

  8. 数论(一)——素数,GCD,LCM

    这是一个数论系列:) 一.素数 ×费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的.对 a = 2,满足的非素数 n 是存 ...

  9. 【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

    近期学了学数论,来写一波总结吧. (1)排列组合,比较基础的东西了吧.//只写个概念吧,(逃: 概念:就是从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合: ...

  10. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. struts2配置的ajax参数传递方法
  2. 【PAT乙级】1080 MOOC期终成绩 (25 分)
  3. Python教程:迭代器的正确使用方法
  4. vue打开后端html文件,vue中怎么请求后端数据?
  5. 服务器系统与普通系统不同,服务器系统与普通系统区别
  6. Windows 7 / Vista 分区问题
  7. 调试JavaScript代码
  8. Python递归通用接口响应深层提取
  9. Tensorflow+gpu安装
  10. SQL Management Studio Express 安装缺少MSXML6解决
  11. 【算法】—— 最大子序列和问题
  12. 【小贴士】工作中的”闭包“与事件委托的”阻止冒泡“
  13. 云闪付华为P9指纹_华为云闪付app指纹支付
  14. Linux中使用sed命令替换字符串
  15. html打印26个字母,用js完成:输出26个英文字母任意3个字母的全部组合
  16. Linux下常用文件系统
  17. 用onetab插件管理chrome的tab页,解决.crx安装时显示invalid的问题
  18. 软件可靠性工程研讨会报告
  19. 计算机网络---传输层
  20. 我的读书笔记 -《厚黑学》

热门文章

  1. 微信群发提示频繁怎么办?
  2. GHOST系统封装详细图文教程完整版(二)
  3. 课程设计 天气预报数据可视化开发
  4. 七夕给男朋友送什么礼物好、七夕男朋友礼物清单
  5. 关于10进制转2进制的C语言代码
  6. Miracle2.1 列表页面显示附件链接
  7. 远程桌面服务器打开任务管理器并运行Windows资源管理器
  8. 倪光南院士:网络安全和信息化要同步推进
  9. 如何使用K8S实现自动化部署
  10. 首席新媒体黎想教程:如何打造爆款裂变活动推广?