【BZOJ 1406】【AHOI 2007】密码箱

2023-10-07 15:58
文章标签 bzoj 2007 密码箱 1406 ahoi

本文主要是介绍【BZOJ 1406】【AHOI 2007】密码箱,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

设:x^2=kn+1
移项:(x+1)(x-1)=kn
令x+1=k1n1,x-1=k2n2,其中k1k2=k,n1n2=n
然后在n的因子中枚举n1,再枚举k1,判断一下是否存在k2,如果存在就是一个合法解,扔到set里面排序去重。

#include<set>
#include<cmath>
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<iomanip>
#include<stdlib.h>
#include<iostream>
#include<algorithm>
#define ll long long
#define inf 1000000000
#define mod 1000000007
#define N 100000
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
int n,n1,n2,k1,x;
set<int> s;
int main()
{scanf("%d",&n);fo(n2,1,n)if (n2*n2>n) break; else{if (n % n2) continue;n1 = n / n2;fo(k1,0,n/n1){x = n1 * k1 + 1; if (x > n) break;if ((x+1) % n2 == 0) s.insert(x);}fo(k1,1,n/n1){x = n1 * k1 - 1; if (x > n) break;if ((x-1) % n2 == 0) s.insert(x);}}if (!s.size()) printf("None\n");set<int>::iterator i;for(i = s.begin();i != s.end(); i++) printf("%d\n",*i);return 0;
}

这篇关于【BZOJ 1406】【AHOI 2007】密码箱的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/158827

相关文章

获取Excel文档的版本(2003或者2007)

因工作需要解析excel文档,用poi插件来进行处理,但是2003版本之前的和2007版本之后的解析方式不一样,开始,我们是以后缀名来区分的(2003之前是xls,2007之后是xlsx),后来发现,如果一个2003文档的后缀名被改成xlsx或反之,解析都会出现一些莫名其妙的问题,所以根据文档内容来判断版本是非常必要的。于是在网上找了很久终于找到一个切实可行的方法,代码如下 public s

【BZOJ】1324 Exca王者之剑 最大权独立集

传送门:【BZOJ】1324  Exca王者之剑 题目分析:赤裸裸的最大权独立集。。。最小割解决 代码如下: #include <cstdio>#include <vector>#include <cstring>#include <algorithm>using namespace std ;#define REP( i , a , b ) for ( int

【BZOJ】1026: [SCOI2009]windy数 数位DP

传送门:【BZOJ】1026: [SCOI2009]windy数 题目分析:数位DP水题。 代码如下: #include <stdio.h>#include <cstring>#include <algorithm>#define rep( i , a , b ) for ( int i = a ; i < b ; ++ i )#define For( i ,

【BZOJ】2152: 聪聪可可 点分治

传送门:【BZOJ】2152: 聪聪可可 题目分析:记录权值和%3的路径的个数。。。然后去重。。没了。。 代码如下: #include <vector>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std ;typedef lo

DL/T645-2007_Part2(参变量数据标识编码表)

数据类型分为7类:电能量、最大需量及发生时间、变量、事件记录、参变量、冻结量、负荷记录。 数据标识数据格式 数据 长度  (字节)单位功能数据项名称DI₃DI₂DI₁DI₀读写04 00 01 01020304050607YYMMDDWWhhmm55NNNNXXXXYYNM00hhmmYYNMDDhhmm  4  3  1  2  5  5年月日星期时分秒分分毫秒年月日时分年月日时分日期及星期(其

九度考研真题 浙大 2007-浙大1023:EXCEL排序 排序

//1023:EXCEL排序 #include<iostream>  #include<algorithm> #include<string.h> using namespace std; struct stu{ char nu[10]; char name[10]; int score; }stud[100100]; bool cmp1(stu A,

九度考研真题 浙大 2007-3浙大游船出租 结构体

//游船出租 #include<iostream>  #include<algorithm> using namespace std; struct node{ int num; char action; char time[10]; double t; bool operator <(const node&A)const{

BZOJ 2440 2301 莫比乌斯应用

http://www.lydsy.com/JudgeOnline/problem.php?id=2440 Description 小 X 自幼就很喜欢数。但奇怪的是,他十分讨厌完全平方数。他觉得这些 数看起来很令人难受。由此,他也讨厌所有是完全平方数的正整数倍的数。然而 这丝毫不影响他对其他数的热爱。  这天是小X的生日,小 W 想送一个数给他作为生日礼物。当然他不能送一 个小X讨厌

DL/T645-2007_Part2(变量数据标识编码表)

数据类型分为7类:电能量、最大需量及发生时间、变量、事件记录、参变量、冻结量、负荷记录。 数据标识数据格式数据长度字节单位功能数据项名称 DI₃ DI₂ DI₁DI₀读写 02  01  01 02 03 FF  00 XXX,X2 V十A相电压B相电压C相电压电压数据块 02  02  01 02 03 FF  00 XXX.XXX3 AA相电流B相电流C相电流电流数据块 02  03  00

BZOJ 3732: Network(最小生成树+倍增)

题目链接 题意:给出一个图,每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少 很明显最终查询的边一定是在最小生成树里面的,先跑出最小生成树,然后,可以树链剖分,也可以使用倍增来计算 #include<bits/stdc++.h>using namespace std;#define cl(a,b) memset(a,b,sizeof(a))#define