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. Vijos 1144 小胖守皇宫 【树形DP】

    小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步 ...

  2. EL 隐含对象

    EL     隐含对象(11个):

  3. ios32---线程的状态

    // // ViewController.m // 04-了解-线程的状态 // // 创建线程是处于新建状态,start是就绪状态,会放入到可调度线程池里面(cpu看线程是否可以调用,是看线程是否在 ...

  4. Chrome查看JavaScript函数

    在页面上右键view page source(Ctrl+U),然后在弹出来的界面可以查找JavaScript函数 注意:这个只能看到内嵌在网页上的JavaScript函数 一般来讲,JavaScrip ...

  5. POJ1704 Georgia and Bob Nim游戏

    POJ1704 这道题可以转化为经典的Nim游戏来解决. Nim游戏是这样的 有n堆石子,每堆各有ai个. 两个人轮流在任意石子堆中取至少1个石子,不能再取的输. 解决方法如下, 对N堆石子求异或 为 ...

  6. bzoj4237 稻草人——分治

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4237 分治: 先把所有点按 y 排序,然后二分递归: 对于每个 mid ,计算经过它的矩形的 ...

  7. mybaties中,模糊查询的几种写法

    模糊查询: 工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('% ...

  8. 2017青岛网络赛1008 Chinese Zodiac

    Chinese Zodiac Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) T ...

  9. 模拟 HDOJ 4552 Running Rabbits

    题目传送门 /* 模拟:看懂题意,主要是碰壁后的转向,笔误2次 */ #include <cstdio> #include <algorithm> #include <c ...

  10. 为 C# 代码生成 API 文档(自译)

    原文地址:http://broadcast.oreilly.com/2010/09/build-html-documentation-for-y.html#comments Sandcastle 功能 ...