数论


  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. Filestream读取或写入文件

    using System.IO;//引用 System.IO namespace filestream { public partial class Form1 : Form { public For ...

  2. C# 执行JS

    需引用命名空间:Microsoft.VsaMicrosoft.JScript using System; using System.Collections.Generic; using System. ...

  3. [leetcode]_Reverse Integer

    经历了三道树的题后,完全崩溃中,急需一道非树图的题来挽救信心. 题目:反转数字.input : 123 , output : 321. 思路:直接,没什么好说的. 自己代码:很龊,有大量的冗余信息,还 ...

  4. PHP CURL访问HTTPS使用详解

    三年前写过一篇<一个简陋的支持HTTPS的PHP CURL封装函数>,当时只是知其然不知其所以然,今天来详细梳理一下. https服务器post数据 代码如下 复制代码 function ...

  5. Yii框架中使用PHPExcel导出Excel文件

    最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config\main.php中添加对PHPExcel的引用,我的方式是这样: 1 2 3 4 ...

  6. LayoutInflater中四种类型inflate方法的介绍

    转自:http://blog.csdn.net/aa4790139/archive/2011/05/07/6401556.aspx 第一种: public View inflate (int reso ...

  7. Delphi 的运算符列表

    分类 运算符 操作 操作数 结果类型 范例 算术运算符 + 加 整数,实数 整数,实数 X + Y - 减 整数,实数 整数,实数 Result - 1 * 乘 整数,实数 整数,实数 P * Int ...

  8. 如何在Eclipse中配置Tomcat

    1.Eclipse EE 配置Tomcat Eclipse EE 主要用于Java Web开发和J2EE项目开发.Eclipse EE中配置Tomcat比较简单,新建一个Tomcat Server即可 ...

  9. linux C socket

    socket套接字和管道同样可以提供进程内通信.但套接字更胜一筹,不同的进程可以跨越不同的主机(说白了,支持网络通信).使用套接字的知名程序:telnet.rlogin.ftp等. 你需要知道的一些基 ...

  10. 【ASP.NET MVC 回顾】HtmlHepler应用-分页组件

    以前在ASP.NET WebForm开发中会用到许多控件,像DropDownList等.同样ASP.NET MVC中也有类似的控件-HtmlHelper. HtmlHelper和服务器控件相比,Htm ...