计蒜客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)
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值