百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用 100100 文钱买 100100 只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数 nn,用 nn 文钱买 nn 只鸡,问公鸡、母鸡、小鸡各买多少只?
输入一个正整数 nn。
如果有解,输出有多少种解(可以用正整数表示的解)。
如果无解,输出"No Answer."
。
1<=n<=10^18
思路:延续百钱买百鸡(三)的思路,我们得到了方程三:7a+4b=n。
但是本题的n最大为10的18次方,所以上一道题目的循环到n/7,数字仍然很大,
所以必然会存在O(1)的规律。
通过盈亏分析,我们发现,如果7a+4b=n这个式子成立,接下来如果a和b要变动,
7a和4b两者变动的值一定要相同,而为了保证两者一样,a如果变动4,b就一定要变动7,
所以我们就可以得出规律,只要找出a满足条件的最小值mina,就可以计算出n/7-mina的值,
我们只需要判断n/7-mina中有几个4即可。
算法复杂度为o(1)