当前位置 博文首页 > Keven_11的博客:C++题解:百钱买百鸡数量
????????目录
题目?
题解
- ?1000ms
- ?131072K
百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱,用?100?文钱买?100?只鸡,公鸡、母鸡、小鸡各买多少只?
本程序要求解的问题是:给定一个正整数?n,用?n?文钱买?n?只鸡,问公鸡、母鸡、小鸡各买多少只?
输入格式
输入一个正整数?n。
输出格式
如果有解,输出有多少种解(可以用正整数表示的解)。
如果无解,输出
"No Answer."
。数据范围
1≤n≤1018。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为?
chicken.in
,输出文件为?chicken.out
样例输入
100
样例输出
4
题解:
知识点:数学
分析: 由于价格是定值,做起来比较方便。我们设公鸡x只,母鸡y只,小鸡z只,鸡n只,则有:
????????????????
? ? ? ? ? ? ? ? ∴7x+4y=n
? ? ? ? ? ? ? ? ∴x=-n+4k? ? y=2n-7k
? ? ? ? ? ? ?所以我们只需要计算合法的k的数量了
? ? ? ? ? ? ? 易证:
代码:
cs#include<iostream> #include<cstdio> using namespace std; typedef long long LL; LL n;//注意用long long int main(){ freopen("chicken.in","r",stdin); freopen("chicken.out","w",stdout); cin>>n; LL l=n/4+(n%4!=0);//k的下限 LL r=n*2/7;//k的上限 if (r<l){ puts("No Answer."); }else{ cout<<r-l+1<<endl;//合法的k的数量 } return 0; }
下一篇:没有了