计蒜客T1375 百钱买百鸡(四)

百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用 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)
 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部