【NOIP2017 D1 T1 小凯的疑惑】
题目描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有 无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在 小凯无法准确支付的商品。
输入输出格式
输入格式:
输入数据仅一行,包含两个正整数 aa 和 bb,它们之间用一个空格隔开,表示小凯手 中金币的面值。
输出格式:
输出文件仅一行,一个正整数 NN,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
【数据范围与约定】
对于 30%的数据: 1 \le a,b \le 501≤a,b≤50。
对于 60%的数据: 1 \le a,b \le 10^41≤a,b≤104。
对于 100%的数据:1 \le a,b \le 10^91≤a,b≤109。
【题解】
①可以得到结论:ans=a*b-a-b(然后你可以水掉它或者继续到②)
②
引理:不定方程:ax+by=c若有解,a,b,c>0
则必有一特解使得-a<y0≤0,x>0;
(引理可以用数轴法,不再赘述)
证明:
先证ax+by=ab-a-b在题设下无解
-》 a(x+1)+b(y+1)=ab 可得:a|y+1 b|x+1 ,
于是可设:y=k2*a-1,x=k1*b-1 k1,k2>0;
-》 ab*(k1+k2-1)=0 即(k1+k2-1)=0矛盾;
再证ax+by=ab-a-b+k(k>0)在题设下必有解
-》 a(x+1)+b(y+1)=ab+k 设x+1=x1,y+1=y1 不失正确性的将它 拆成:
ax1+by1=ab …① ax2+by2=k …②
由①可得x1=0,y1=a的特解,由②再加引理可得有一组x2>0,-a< y2≤0 加一加就可以得到原方程必有一组解使得x>0,0<y≤a;
综上即ab-a-b为ans
证毕。
#include <cstdio>
#include <iostream>
#include <cstring>
#include <algorithm>
#define ll long long
#define Run(i,l,r) for(int i=l;i<=r;i++)
#define Don(i,l,r) for(int i=l;i>=r;i--)
using namespace std;
ll a,b;
int main()
{ cin>>a>>b;
cout<<a*b-a-b<<endl;
return ;
}//by tkys_Austin;
最新文章
- 常用类string的用法
- 84 tune2fs-调整系统参数
- 浅谈php生成静态页面
- PLL失锁
- 关于Web开发里并发、同步、异步以及事件驱动编程的相关技术
- ACM - 动态规划专题 题目整理
- postgresql编译安装与调试(二)
- 一致性哈希(consistent hashing)算法
- java设计模式---享元模式
- Python3学习之一环境搭建
- (一)backbone - API入门
- [Codecademy] HTML&;CSS 第三课:HTML Basic II
- Java学习笔记-枚举类型
- webuploader
- php页面静态化,ob缓存方法
- hashcat使用命令简介
- 如何使用JBDC修改数据
- P1350 车的放置
- 详解如何将MathType嵌入word中
- 全局变量和局部变量(global关键字)
热门文章
- python 使用生成器 来完成 监听文件输入的例子
- pycharm中每次创建py文件时就自动生成代码头,以及出现SyntaxError:Non-ASCII 。。。问题
- 【Markdown】Markdown的使用(自用)
- R语言学习笔记(十六):构建分割点函数
- BZOJ:2038: [2009国家集训队]小Z的袜子(hose)(莫队算法模板)
- 2019年第十届蓝桥杯C/C++程序设计本科B组省赛 E迷宫
- UVA - 12230
- 使用sqoop将mysql中表导入hive中报错
- mysql 5.7.19 zip版本 windows安装步骤
- SQL Server 2005 导出包含(insert into)数据的SQL脚本 (使用存储过程) 分类: 数据库