A.Alyona and copybooks

来源:互联网 发布:用手机淘宝怎么买彩票 编辑:程序博客网 时间:2024/05/21 16:54

  这题考查思维的全面性。

 一开始我直接分类推公式,余数不同分类讨论。

AC代码:

#include<cstdio>#include<algorithm>using namespace std;typedef long long LL;const LL inf=1e12;int main(){LL ans=inf;LL n,a,b,c;scanf("%lld%lld%lld%lld",&n,&a,&b,&c);int k=(int)(n%4);if(k==0) ans=0;else if(k==1){ans=min(ans,3*a);ans=min(ans,c);ans=min(ans,a+b);}else if(k==2){ans=min(ans,2*a);ans=min(ans,b);ans=min(ans,2*c); }else if(k==3){ans=min(ans,a);ans=min(ans,b+c);ans=min(ans,3*c);}printf("%lld\n",ans);return 0;}
在推完公式,我发现每类书最多买不超过4包,直接三个for循环枚举所有情况。后面想了一下,确实很有道理。

AC代码:

#include<iostream>#include<algorithm>#include<cstdio>using namespace std;typedef long long LL;const LL inf=1e12;int main(){LL n,a,b,c;while(scanf("%lld%lld%lld%lld",&n,&a,&b,&c)!=EOF){LL ans=inf;for(int i=0;i<5;++i)for(int j=0;j<5;++j)for(int k=0;k<5;++k){if((n+i+2*j+3*k)%4==0)ans=min(ans,i*a+j*b+k*c);}cout<<ans<<endl;}return 0;} 

如有不当指出欢迎指出!

0 0
原创粉丝点击