其实就是当年sxy给我讲的墨墨的等式,只是当时比较菜听得似懂非懂。

小凯的疑惑

去年noipday1t1,当时随便猜了个结论结果猜对了,现在瞎证一下,答案是a*b-a-b。

设a为a,b中较小的一个,发现b*0%a,b*1%a,b*2%a,b*3%a……b*(a-1)%a的结果两两不同。

反证,如果存在b*x%a=b*y%a(x<y<a),即b*x-b*y=0(mod a),b*(x-y)=0(mod a), ∵gcd(a,b)=1 ∴x-y=0(mod a) 不满足x<y<a,得证

于是mod a等于b*x%a的最小数就是b*x,那么最大的不能表达的数就是b*x-a,于是答案就是b*(a-1)-a=a*b-a-b

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
typedef long long LL;
typedef double db;
using namespace std;
LL a,b; template<typename T>void read(T &x) {
char ch=getchar(); T f=; x=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} //#define ANS
int main() {
#ifdef ANS
freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
#endif
read(a); read(b);
printf("%lld\n",a*b-a-b);
Formylove;
}

牛场围栏

小凯疑惑的升级版,小L的不疑惑

找出木棍中长度的最小值a,把其他长度拿来跑最短路求出%a=1、2、3……a-1的最小数的大小,答案就是,max(dis[i]-a);

 // luogu-judger-enable-o2
//Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int a[N],n,m,ok[N],mi,e[N][],ecnt,vis[N];
LL dis[N],inf; template<typename T>void read(T &x) {
char ch=getchar(); T f=; x=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct node {
int v; LL dis;
node(int v,LL dis):v(v),dis(dis){}
friend bool operator <(const node&A,const node&B) {
return A.dis>B.dis;
}
};
priority_queue<node>que; void dijkstra() {
memset(dis,/,sizeof(dis));
dis[]=;
que.push(node(,));
while(!que.empty()) {
node t=que.top();
que.pop();
if(vis[t.v]||dis[t.v]!=t.dis) continue;
vis[t.v]=;
For(i,,ecnt) if(dis[(t.v+e[i][])%mi]>t.dis+e[i][]) {
dis[(t.v+e[i][])%mi]=t.dis+e[i][];
que.push(node((t.v+e[i][])%mi,t.dis+e[i][]));
}
}
LL ans=-,fl=;
For(i,,mi-) {
if(dis[i]!=inf)
ans=max(ans,dis[i]-mi);
else fl=;
}
if(ans==||fl==) ans=-;
printf("%lld\n",ans);
} //#define ANS
int main() {
#ifdef ANS
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
#endif
read(n); read(m);
memset(dis,/,sizeof(dis));
inf=dis[];
For(i,,n) {
read(a[i]);
ok[a[i]]=;
For(j,,m) {
if(a[i]-j<=) break;
ok[a[i]-j]=;
}
}
For(i,,) if(ok[i]) {
mi=i; break;
}
Rep(i,,) if(ok[i])
dis[i%mi]=i;
For(i,,mi-) if(dis[i]!=inf) {
e[++ecnt][]=i;
e[ecnt][]=dis[i];
}
dijkstra();
Formylove;
}

luoguP3951 小凯的疑惑/P2662 牛场围栏的更多相关文章

  1. 2017提高组D1T1 洛谷P3951 小凯的疑惑

    洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...

  2. 【同余最短路】洛谷 P2662 牛场围栏

    关于同余最短路的部分 [同余最短路]P3403跳楼机/P2371墨墨的等式 [P2662牛场围栏] 题目背景 小L通过泥萌的帮助,成功解决了二叉树的修改问题,并因此写了一篇论文, 成功报送了叉院(羡慕 ...

  3. 【比赛】NOIP2017 小凯的疑惑

    找规律:ans=a*b-a-b 证明:(可见 体系知识) gcd(A, B) = 1 → lcm(A, B) = AB 剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成 任何数分成m ...

  4. Luogu [P3951] 小凯的疑惑

    题目详见:[P3951]小凯的疑惑 首先说明:此题为一道提高组的题.但其实代码并没有提高组的水平.主要考的是我们的推断能力,以及看到题后的分析能力. 分析如下: 证明当k>ab-a-b时,小凯可 ...

  5. NOIP 2017 小凯的疑惑

    # NOIP 2017 小凯的疑惑 思路 a,b 互质 求最大不能表示出来的数k 则k与 a,b 互质 这里有一个结论:(网上有证明)不过我是打表找的规律 若 x,y(设x<y) 互质 则 : ...

  6. luogu 3951 小凯的疑惑

    noip2017 D1T1 小凯的疑惑 某zz选手没有看出这道结论题,同时写出了exgcd却不会用,只能打一个哈希表骗了30分 题目大意: 两个互质的正整数a和b,求一个最小的正整数使这个数无法表示为 ...

  7. P3951 小凯的疑惑

    P3951 小凯的疑惑 题解 题意也就是求解不能用 ax+by 表示的最大数 ans(a,b,x,y,都是正整数) 给定 a ( =7 ) ,  b ( =3 ) 我们可以把数轴非负半轴上的数按照a的 ...

  8. 洛谷 P3951 小凯的疑惑 找规律

    目录 题面 题目链接 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例: 输出样例: 说明 思路 证明 AC代码 include<bits/stdc++.h> 题面 ...

  9. 题解 P3951 小凯的疑惑

    P3951 小凯的疑惑 数论极菜的小萌新我刚看这题时看不懂exgcd做法的题解,后来在网上找到了一篇博客,感觉代码和推导都更加清新易懂,于是在它的基础上写了题解qwq 分析 两数互质,且有无限个,想到 ...

随机推荐

  1. magento开发必备插件列表汇总

    magento和wordpress一样,因为开放而倍加优秀 ,搜集下常用的magento插件以便大家使用时更加方便快捷 导航放到右侧:magento-community/RicoNeitzel_Ver ...

  2. 【SQL】Mysql常用sql语句记录

    1.创建用户.赋予权限 CREATE DATABASE scadm DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE USER 's ...

  3. 51Nod 1600 Simple KMP 解题报告

    51Nod 1600 Simple KMP 对于一个字符串\(|S|\),我们定义\(fail[i]\),表示最大的\(x\)使得\(S[1..x]=S[i-x+1..i]\),满足\((x<i ...

  4. vue基础二

    1.vue实例 每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的.在实例化 Vue 时,需要传入一个选项对象,它可以包含数据.模板.挂载元素.方法.生命周期钩子等选 ...

  5. java——文件

  6. AcWing 203. 同余方程 (线性同余方程)打卡

    求关于x的同余方程 ax ≡ 1(mod b) 的最小正整数解. 输入格式输入只有一行,包含两个正整数a,b,用一个空格隔开. 输出格式输出只有一行,包含一个正整数x,表示最小正整数解. 输入数据保证 ...

  7. 【linux】netlink

    Netlink实现网卡上下线监控 https://blog.csdn.net/sourthstar/article/details/7975999

  8. rpm升级时spec文件执行的流程

    转自:https://www.cnblogs.com/zafu/p/7423758.html %pre 和 %post 脚本片段分别在软件包安装前和安装后执行.%preun 和 %postun 脚本片 ...

  9. 区分slice,splice,split

    原文:https://www.cnblogs.com/webjoker/p/5218114.html 1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进 ...

  10. vue项目使用js-xlsx进行excel表格的导入和导出方法的简单原型封装

    前提:已经安装好 file-saver xlsx和 script-loader,如未安装,请查看 https://www.cnblogs.com/luyuefeng/p/8031597.html 新建 ...