P4296 [AHOI2007]密码箱

密码x大于等于0,且小于n,而x的平方除以n,得到的余数为1。

求这个密码,$1<=n<=2,000,000,000$

暴力枚举,数据有点儿水$O(nlogn)$,显然过不了$n<=10^9$

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath> #define LL long long
using namespace std; LL n;
bool flg=false; int main()
{
scanf("%lld",&n); for(int i=;;i++){
LL x=i*n+,p=sqrt(x);
if(p>n) break;
if(p*p==x){
flg=true;
printf("%lld\n",p);
}
}
if(!flg) return puts("None"),;
return ;
}

正解:

题目要求$x^x\mod n =1$,也就是求$n|(x^2-1^2)$,即$n|(x-1)\times(x+1)$,既然如此,考虑将$n$拆开,就有$n=a\times b$ $a|(x+1),b|(x-1)$或是$b|(x+1),a|(x-1)$

不妨设$a<b$,枚举$a$,同时枚举两种情况,优先队列+$STL$——$map$判重

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<queue>
#include<vector> #define LL long long
using namespace std; LL n;
bool flg=false; priority_queue<LL,vector<LL>,greater<LL> >Q;
map<LL,bool>M; int main()
{
scanf("%lld",&n);
int p=sqrt(n);
for(int i=;i<=p;i++){
if(n%i==){
int b=n/i;
for(int x=;x<=n;x+=b)//b|x-1
if((x+)%i==&&!M[x]) Q.push(x),M[x]=;
for(int x=b-;x<=n;x+=b)//b|x+1
if((x-)%i==&&!M[x]) Q.push(x),M[x]=;
}
}
while(!Q.empty()){
printf("%lld\n",Q.top());
Q.pop();
} return ;
}

或是$set$去重

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<map>
#include<queue>
#include<vector>
#include<set> #define LL long long
using namespace std; LL n;
bool flg=false; set<LL>S; int main()
{
scanf("%lld",&n);
int p=sqrt(n);
for(int i=;i<=p;i++){
if(n%i==){
int b=n/i;
for(int x=;x<=n;x+=b)//b|x-1
if((x+)%i==)
S.insert(x);
for(int x=b-;x<=n;x+=b)//b|x+1
if((x-)%i==)
S.insert(x);
}
}
while(!S.empty()){
printf("%lld\n",*S.begin());
S.erase(S.begin());
} return ;
}

貌似没有$None$的情况,即数据里不存在$n=1$

洛谷——P4296 [AHOI2007]密码箱的更多相关文章

  1. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  2. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  3. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  4. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  5. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  6. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

  7. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  8. 洛谷八月月赛Round1凄惨记

    个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...

  9. 洛谷 P1379 八数码难题 Label:判重&&bfs

    特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...

随机推荐

  1. python generator iterator和iterable object

    1 iterable object list.dict.set.tuple.file(在每行上iterate)等都是iterable object,但是它们不是iterator.但是它们可以转换成it ...

  2. ios28--UIScrollView

    // // ViewController.m // UIScrollVIew #import "ViewController.h" @interface ViewControlle ...

  3. bzoj2705 [SDOI2012]Longge的问题——因数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2705 一开始自己想了半天... 有了点思路:遍历 n 的因数 k,每个因数要预处理出 gcd ...

  4. 35. extjs MessageBox里fn:是什么意思

    function的缩写,用来指定回调函数,就是你点击确定或取消按钮之类的按钮以后触发的事件Ext.Msg.show({ title:'自定义消息框', msg:'这是一个自定义消息框,想怎么搞就怎么搞 ...

  5. bzoj 4756: [Usaco2017 Jan]Promotion Counting【dfs+树状数组】

    思路还是挺好玩的 首先简单粗暴的想法是dfs然后用离散化权值树状数组维护,但是这样有个问题就是这个全局的权值树状数组里并不一定都是当前点子树里的 第一反应是改树状数组,但是显然不太现实,但是可以这样想 ...

  6. [NOIP2004]火星人

    Description 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数 ...

  7. EditText(4)常用属性详解

    常用的属性: 显示密码 通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码. editText.setTransformationMethod( ...

  8. poj2502 Subway

    思路: 需要注意的地方:一条地铁线路并不一定和样例描述的那样是直的:同一条线路上的两个站点步行可能更快. 实现: #include <iostream> #include <cstd ...

  9. AngularJs与Java Web服务器交互

    AngularJs是Google工程师研发的产品,它的强大之处不是几句话就能描述的,只有真正使用过的人才能体会到,笔者准备在这篇文章中,以一个简单的登录校验的例子说明如何使用AngularJs和Web ...

  10. golang 并发锁的陷阱

    错误代码示例 package main import ( "sync" "strconv" "fmt" ) type Node struct ...