洛谷——P4296 [AHOI2007]密码箱
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]密码箱的更多相关文章
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
- 洛谷P1371 NOI元丹
P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交 讨论 题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...
- 洛谷P1538迎春舞会之数字舞蹈
题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...
- 洛谷八月月赛Round1凄惨记
个人背景: 上午9:30放学,然后因为学校举办读书工程跟同学去书城选书,中午回来开始打比赛,下午又回老家,中间抽出一点时间调代码,回家已经8:50了 也许是7月月赛时“连蒙带骗”AK的太幸运然而因同学 ...
- 洛谷 P1379 八数码难题 Label:判重&&bfs
特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...
随机推荐
- 在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)
为了能中一个系统上开发64或32位C++程序,费了些周折,现在终于能够开始干过了.在此记录此时针对Q5.4版本的32位开发环境配置过程. 1. 下载Qt 5.4 的32位版本,进行安装,安装过程中会发 ...
- ionic2 在执行ionic serve后报 build dev failed: Cannot set property 'fileSystem' of null
ionic2 真是烦人,因为环境依赖的问题还有网络的问题,不知砸的,项目放一段事件不运行就会出问题. 我一开始是 用 cnpm install安装的依赖,其中也报了错, 然后执行 ionic serv ...
- 500 OOPS: vsftpd: refusing to run with writable root inside chroot () 不能上传文件和文件夹
500 OOPS: vsftpd: refusing to run with writable root inside chroot () 问题的是因为用户的根目录可写,并且使用了chroot限制,而 ...
- 【JSOI 2008】 最小生成树计数
[题目链接] 点击打开链接 [算法] 笔者做这题参考了这篇博客 : https://blog.sengxian.com/solutions/bzoj-1016 推荐阅读 首先,我们需要知道三个定理 : ...
- 【POJ 1144】 Network
[题目链接] 点击打开链接 [算法] Tarjan算法求割点 [代码] #include <algorithm> #include <bitset> #include < ...
- 解决 django 中 mysql gone away 的问题
最近在项目中,我使用 Django Command 模块写了一个脚本,处理从 MQ 发来的消息,并入库.在测试过程中,程序运行良好,但是在程序上线并运行一段时间后,出现了以下错误: Operation ...
- python-----模糊搜索文件
告诉计算机文件在哪 → 使用路径描述位置 描述文件的特征 → 用条件判断来筛选 比对后打印文件名 → 用循环来实现逐个比对 #!/usr/bin/env python # -*- codi ...
- Python print 输出不换行,只有空格
for x in open("/home/soyo/桌面/中期内容/6.txt"): print x, ,,,]: print x, #print 输出没有换行,只有空格 结果: ...
- Commons IO 2.5-IOUtils
转自:http://blog.csdn.net/zhaoyanjun6/article/details/55051917 福利另外我已经把Commons IO 2.5的源码发布到Jcenter,大家就 ...
- samba - linux客户端访问samba服务器的指令(转载)
转自:http://linux.sheup.com/linux/linux5303.htm linux客户端访问samba服务器的指令2004-04-23 15:18 pm来自:Linux文档现载:W ...