程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 藍橋杯之買不到的數目,藍橋買不到數目

藍橋杯之買不到的數目,藍橋買不到數目

編輯:C++入門知識

藍橋杯之買不到的數目,藍橋買不到數目


小明開了一家糖果店。他別出心裁:把水果糖包成4顆一包和7顆一包的兩種。糖果不能拆包賣。
小朋友來買糖的時候,他就用這兩種包裝來組合。當然有些糖果數目是無法組合出來的,比如要買 10 顆糖。
你可以用計算機測試一下,在這種包裝情況下,最大不能買到的數量是17。大於17的任何數字都可以用4和7組合出來。
本題的要求就是在已知兩個包裝的數量時,求最大不能組合出的數字。
輸入:
兩個正整數,表示每種包裝中糖的顆數(都不多於1000)
要求輸出:
一個正整數,表示最大不能買到的糖數
例如:
用戶輸入:
4 7
程序應該輸出:
17
再例如:
用戶輸入:
3 5
程序應該輸出:
7

算法分析:

證明以下2個命題即可:
1. (x-1)(y-1)-1 不能被表示為 ax+by的形式
2. 大於等於(x-1)(y-1)都能被表示為 ax+by的形式

命題1用反證法即可。
假設 (x-1)(y-1)-1 = ax+by     (a、b>=0)
即 ax+by = xy-x-y
即 (a+1)x+(b+1)y=xy
所以 a+1要能整除y,設 a+1=cy (c>0)
所以 b+1要能整除x,設 b+1=dx (d>0)
(c+d)xy=xy
=> c+d=1
必有c和d中有一個<=0
與假設矛盾

1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 int a, b;
6 cin >> a >> b;
7 cout << a * b - a - b << endl;
8 return 0;
9 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved