蓝桥杯打卡Day15天


文章目录

  • 买不到的数目
  • 错误票据

一、买不到的数目OJ链接

本题思路**:**引理:给定a,b,若d=gcd(a,b)>1 ,则一定不能凑出最大数。结论:如果 a,b均是正整数且互质,那么由 ax+by,x≥0,y≥0 不能凑出的最大数是 ab−a−b。

证明:首先证明 ab−a−b不能被 ax+bx,x≥0,y≥0表示出。
反证法:假设 ab−a−b=ax+by,那么 ab=a(x+1)+b(y+1),由于 a|ab,a|a(x+1),所以 a|b(y+1),由于 a,b 互质,所以 a|(y+1),由于 y≥0,所以 a<=y+1,所以 b(y+1)≥ab。同理可得 a(x+1)≥ab,所以 a(x+1)+b(y+1)≥2ab>ab,矛盾。证明 ab−a−b+d,d>0一定可以表示成 ax+by,x,y≥0 的形式

cpp 复制代码
#include <bits/stdc++.h>

int main()
{
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);std::cout.tie(nullptr);
  
  int a,b;
  std::cin>>a>>b;
  
  int d=std::lcm(a,b);
  std::cout<<d-a-b<<std::endl;
  return 0;
}

二、错误票据OJ链接

**本题思路:**本题通过排序的方式来枚举即可。

cpp 复制代码
#include <bits/stdc++.h>

constexpr int N=10010;

int n,m;
int a[N];

int main()
{
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);std::cout.tie(nullptr);
  
  std::cin>>n;
  std::string line;
  
  //将第一行的回车读入
  std::getline(std::cin,line);
  while(n--){
    
    std::getline(std::cin,line);
    
    //stringstream 默认是以空格来分割字符串的
    std::stringstream ssin(line);
    while(ssin>>a[m]){
      m++;
    }
  }
  
  //排序
  std::sort(a,a+m);
  int d=-1,c=-1;//d是找出重复的,c是找出缺失的
  //从前往后枚举即可
  for(int i=0;i<m-1;i++){
    if(a[i]==a[i+1]) d=a[i];
    else if(a[i+1]==a[i]+2) c=a[i]+1;
  }
  
  std::cout<<c<<" "<<d<<std::endl;
  return 0;
}
相关推荐
爱学习的小鱼gogo8 小时前
python 矩阵中寻找就接近的目标值 (矩阵-中等)含源码(八)
开发语言·经验分享·python·算法·职场和发展·矩阵
代码对我眨眼睛13 小时前
226. 翻转二叉树 LeetCode 热题 HOT 100
算法·leetcode·职场和发展
黑色的山岗在沉睡14 小时前
LeetCode 494. 目标和
算法·leetcode·职场和发展
莫叫石榴姐20 小时前
SQL百题斩:从入门到精通,一站式解锁数据世界
大数据·数据仓库·sql·面试·职场和发展
你总是一副不开心的样子(´ . .̫ .21 小时前
一、十天速通Java面试(第三天)
java·面试·职场和发展·java面试
小欣加油1 天前
leetcode 62 不同路径
c++·算法·leetcode·职场和发展
夏鹏今天学习了吗1 天前
【LeetCode热题100(38/100)】翻转二叉树
算法·leetcode·职场和发展
夏鹏今天学习了吗1 天前
【LeetCode热题100(36/100)】二叉树的中序遍历
算法·leetcode·职场和发展
微笑尅乐1 天前
从暴力到滑动窗口全解析——力扣8. 字符串转换整数 (atoi)
算法·leetcode·职场和发展
007php0072 天前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展