其实就是当年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

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. typedef long long LL;
  7. typedef double db;
  8. using namespace std;
  9. LL a,b;
  10.  
  11. template<typename T>void read(T &x) {
  12. char ch=getchar(); T f=; x=;
  13. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  14. if(ch=='-') f=-,ch=getchar();
  15. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  16. }
  17.  
  18. //#define ANS
  19. int main() {
  20. #ifdef ANS
  21. freopen("1.in","r",stdin);
  22. //freopen("1.out","w",stdout);
  23. #endif
  24. read(a); read(b);
  25. printf("%lld\n",a*b-a-b);
  26. Formylove;
  27. }

牛场围栏

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

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

  1. // luogu-judger-enable-o2
  2. //Achen
  3. #include<bits/stdc++.h>
  4. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  5. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  6. #define Formylove return 0
  7. const int N=;
  8. typedef long long LL;
  9. typedef double db;
  10. using namespace std;
  11. int a[N],n,m,ok[N],mi,e[N][],ecnt,vis[N];
  12. LL dis[N],inf;
  13.  
  14. template<typename T>void read(T &x) {
  15. char ch=getchar(); T f=; x=;
  16. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  17. if(ch=='-') f=-,ch=getchar();
  18. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  19. }
  20.  
  21. struct node {
  22. int v; LL dis;
  23. node(int v,LL dis):v(v),dis(dis){}
  24. friend bool operator <(const node&A,const node&B) {
  25. return A.dis>B.dis;
  26. }
  27. };
  28. priority_queue<node>que;
  29.  
  30. void dijkstra() {
  31. memset(dis,/,sizeof(dis));
  32. dis[]=;
  33. que.push(node(,));
  34. while(!que.empty()) {
  35. node t=que.top();
  36. que.pop();
  37. if(vis[t.v]||dis[t.v]!=t.dis) continue;
  38. vis[t.v]=;
  39. For(i,,ecnt) if(dis[(t.v+e[i][])%mi]>t.dis+e[i][]) {
  40. dis[(t.v+e[i][])%mi]=t.dis+e[i][];
  41. que.push(node((t.v+e[i][])%mi,t.dis+e[i][]));
  42. }
  43. }
  44. LL ans=-,fl=;
  45. For(i,,mi-) {
  46. if(dis[i]!=inf)
  47. ans=max(ans,dis[i]-mi);
  48. else fl=;
  49. }
  50. if(ans==||fl==) ans=-;
  51. printf("%lld\n",ans);
  52. }
  53.  
  54. //#define ANS
  55. int main() {
  56. #ifdef ANS
  57. freopen("a.in","r",stdin);
  58. freopen("a.out","w",stdout);
  59. #endif
  60. read(n); read(m);
  61. memset(dis,/,sizeof(dis));
  62. inf=dis[];
  63. For(i,,n) {
  64. read(a[i]);
  65. ok[a[i]]=;
  66. For(j,,m) {
  67. if(a[i]-j<=) break;
  68. ok[a[i]-j]=;
  69. }
  70. }
  71. For(i,,) if(ok[i]) {
  72. mi=i; break;
  73. }
  74. Rep(i,,) if(ok[i])
  75. dis[i%mi]=i;
  76. For(i,,mi-) if(dis[i]!=inf) {
  77. e[++ecnt][]=i;
  78. e[ecnt][]=dis[i];
  79. }
  80. dijkstra();
  81. Formylove;
  82. }

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. Android开发笔记之ArrayAdapter

    1,ArrayAdapter的item中的条目的布局文件的正确写法: item.xml <?xml version="1.0" encoding="utf-8&qu ...

  2. java des 加密/解密

    JAVA实现 加密 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 public byte[] desCrypto(byte[] datasource, String password) { ...

  3. ElasticSearch---初识

    1.概述 1.1 ElasticSearch是一个   基于Lucene   的  搜索服务器: 1.2 ElasticSearch 提供了一个分布式多用户能力的全文搜索引擎,基于  RESTful ...

  4. idea 增量包配置

    set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,serve ...

  5. Spring AOP 总结

    AOP的基础是Java动态代理 Java中代理的实现一般分为三种:JDK静态代理.JDK动态代理以及CGLIB动态代理. 静态代理: 代理类与被代理类实现同一个接口,在代理类中持有一个被代理对象的引用 ...

  6. Delphi 打印纸张选项设置参数

    { paper selections } {$EXTERNALSYM DMPAPER_LETTER} DMPAPER_LETTER = 1; { Letter 8 12 x 11 in } {$EXT ...

  7. DELPHI中枚举类型数据的介绍和使用方法

    在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...

  8. URAL 1996. Cipher Message 3(KMP+fft)

    传送门 解题思路 因为要完全匹配,所以前七位必须保证相同,那么就可以把前7位提出来做一遍\(kmp\)匹配,最后的答案一定在这些位置里.考虑最后一位,可以把最后一位单独取出来,要计算的是最后一位相同的 ...

  9. opencv环境变量配置

    本文章由@浅墨_毛星云 出品  原文文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨)    微博:ht ...

  10. Flink 配置文件详解

    前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧. 安装目录下主要有 flink-conf.yaml 配置.日志的配置文件.zk 配置.Fli ...