题解 | #买铅笔#

买铅笔

https://ac.nowcoder.com/acm/problem/16437

循环体 不断更新ans的值 从而实现不用min函数的时候实现遍历求出最小值
另外 为了简化复杂度 本题使用倍增思想 #include using namespace std;

int main(){
    int i,j,k,n,m,w,ans;
    cin >>n;
    ans = 0;
    for(i=0;i<3;i++){
       cin>> j >> k;m=j;w=k;//输入并存下初始的数量与价格
        while(j<n){j<<=1;k<<=1;}//数量与价格不断*2直到数量大于n
        while(j>n){j-=m;k-=w;}//*2有可能导致买太多了,减去一些
        while(j<n){j+=m;k+=w;}//减去之后又可能太少了,加上一些
            //其实就是大幅度地上调,然后做一些微调
        if(k<ans||ans==0)ans=k;//判断是否是最小花费
    }
    cout << ans;
    return 0;//输出并返回
}
全部评论

相关推荐

包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务