数论


  Orz iwtwiioi

  果然数论很捉鸡>_>完全不知道怎么下手

  $$x^2 \equiv 1 \pmod n \rightarrow (x+1)*(x-1)=k*n $$

  所以,我们得到$$n | (x+1)(x-1)$$

  那么有什么用呢?注意到整除是个神奇的关系= =所以我们可以令$n=a*b$,那么对于每个x,一定有$a|(x+1) 且 b|(x-1)$ 或是 $a|(x-1) 且 b|(x+1)$

  然后?我们可以$O(\sqrt{n})$枚举a,得到b,然而,x+1(或者x-1)是b的倍数!所以我们可以枚举这个倍数,再判断与它对应的x-1(或x+1)是否满足与a的整除关系,就可以找到x啦!

  最后再用set判重……

  Orzzzzzz……

  太神了……

 /**************************************************************
Problem: 1406
User: Tunix
Language: C++
Result: Accepted
Time:8 ms
Memory:1276 kb
****************************************************************/ //BZOJ 1406
#include<set>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
typedef long long LL;
set<LL> s;
set<LL>::iterator it;
int main(){
#ifndef ONLINE_JUDGE
freopen("1406.in","r",stdin);
freopen("1406.out","w",stdout);
#endif
LL n; scanf("%lld",&n);
for(LL i=;i*i<=n;i++) if (n%i==){
LL j=n/i,x;
for(LL k=;j*k+<n;k++){
x=j*k+;
if ((x+)%i==) s.insert(x);
}
for(LL k=;j*k-<n;k++){
x=j*k-;
if ((x-)%i==) s.insert(x);
}
}
if (!s.size()){puts("None");return ;}
for(it=s.begin();it!=s.end();it++)
printf("%lld\n",*it);
return ;
}

1406: [AHOI2007]密码箱

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 877  Solved: 509
[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

HINT

Source

[Submit][Status][Discuss]

【BZOJ】【1406】【AHOI2007】密码箱的更多相关文章

  1. BZOJ 1406: [AHOI2007]密码箱

    二次联通门 : BZOJ 1406: [AHOI2007]密码箱 /* BZOJ 1406: [AHOI2007]密码箱 数论 要求 x^2 ≡ 1 (mod n) 可以转换为 x ^ 2 - k * ...

  2. bzoj 1406: [AHOI2007]密码箱 二次剩餘

    1406: [AHOI2007]密码箱 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 701  Solved: 396[Submit][Status] D ...

  3. BZOJ 1406: [AHOI2007]密码箱( 数论 )

    (x+1)(x-1) mod N = 0, 枚举N的>N^0.5的约数当作x+1或者x-1... ------------------------------------------------ ...

  4. BZOJ 1406: [AHOI2007]密码箱 exgcd+唯一分解定理

    推出来了一个解法,但是感觉复杂度十分玄学,没想到秒过~ Code: #include <bits/stdc++.h> #define ll long long #define N 5000 ...

  5. 1406: [AHOI2007]密码箱

    1406: [AHOI2007]密码箱 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1591  Solved: 944[Submit][Status][ ...

  6. 【BZOJ】1406: [AHOI2007]密码箱

    http://www.lydsy.com/JudgeOnline/problem.php?id=1406 题意:求$0<=x<n, 1<=n<=2,000,000,000, 且 ...

  7. BZOJ_1406_[AHOI2007]密码箱_枚举+数学

    BZOJ_1406_[AHOI2007]密码箱_枚举+数学 Description 在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子 ...

  8. 洛谷——P4296 [AHOI2007]密码箱

    P4296 [AHOI2007]密码箱 密码x大于等于0,且小于n,而x的平方除以n,得到的余数为1. 求这个密码,$1<=n<=2,000,000,000$ 暴力枚举,数据有点儿水$O( ...

  9. 【BZOJ 1406】 [AHOI2007]密码箱

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] \(x^2%n=1\) \(x^2-1 = k*n\) \((x+1)*(x-1) % n == 0\) 设\(n=a*b\) 对于 ...

  10. BZOJ 1406 密码箱

    直接两层枚举就行了. 避免排序可以用set. #include<iostream> #include<cstdio> #include<cstring> #incl ...

随机推荐

  1. 单列模式(data与business交互)

    public class CommentsBusiness //Business { #region 单列模式 private static CommentBusiness instance; pri ...

  2. [leetcode]_Search Insert Position

    题目:查找元素target插入一个数组中的位置. 代码: public int searchInsert(int[] A, int target) { int len = A.length; int ...

  3. JavaScript的闭包是什么意思以及作用和应用场景

    JavaScript闭包 1.什么是闭包 百度百科对于闭包的解释是:闭包是指可以包含自由(未绑定到特定对象)变量的代码块:这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中 ...

  4. CentOS 7上的redis搭建

    http://www.cnblogs.com/shanyou/archive/2012/07/14/2591881.html

  5. 容易被忽略的事----sql语句中select语句的执行顺序

    关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意. 今天在一次面试的时候自己见到了,感觉没一点的印象, ...

  6. 安装SRILM

    参考博文:Ubuntu 64位系统下SRILM的配置详解 来源52nlp www.52nlp.cn 首先下载SRILM 解压缩到home即可 然后需要修改MakeFile文件: # SRILM = / ...

  7. moses:processPhraseTable被删除

    今年一月,processPhraseTable被删除了,具体原因如下: https://www.mail-archive.com/moses-support@mit.edu/msg11372.html ...

  8. entityFramework使用 codefirst

    新建项目 用nuget安装entityFramework,Install-Package Entityframework 建一个model和context //[Table("Custome ...

  9. bat完美关机命令

    @echo off title OLIVER-COMPUTER mode con cols= lines= color 0d shutdown /a >nul >nul ver > ...

  10. jquery绑定事件失效的情况(转)

    原文地址:http://www.thinksaas.cn/group/topic/348453/ jQuery中文api地址:http://www.jquery123.com/api/ jQuery官 ...