zoukankan      html  css  js  c++  java
  • 940B Our Tanya is Crying Out Loud

    传送门

    题目大意

    给你n,k,A,B四个数,x=n,有两种操作:

      1.将x-1,需支付A个金币

      2.将x÷k,需支付B个金币,当且仅当k能整除x时可进行此操作

    问将x修改为1至少要花几个金币

    分析

    模拟两个过程,如果k能整除x则判断一个一个将x减到想x/k和将x除以k哪个花费的金币少,否则如果x大于k将x减去x模k的余数(不可每次减1,减若干次,否则会超时),x小于k则减去(x-1)。注意特判k等于1的情况。

    代码

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<algorithm>
    #include<cctype>
    #include<cmath>
    #include<cstdlib>
    #include<queue>
    #include<ctime>
    #include<vector>
    #include<set>
    #include<map>
    #include<stack>
    using namespace std;
    int main()
    {     long long n,m,i,j,k,x,a,b,ans=0;
          cin>>n>>k>>a>>b;
          x=n;
          if(k==1){
              cout<<(n-1)*a<<endl;
              return 0;
          }
          while(x!=1){
              if(x%k!=0){
                  if(x>k){
                    ans+=(x%k)*a;
                    x=x-x%k;
                  }else {
                  ans+=(x-1)*a;
                  x=1;
                }
              }else {
                  if((x-x/k)*a<b){
                      ans+=(x-x/k)*a;
                      x=x/k;
                  }else {
                      x=x/k;
                      ans+=b;
                  }
              }
          }
          cout<<ans<<endl;
          return 0;
    }

  • 相关阅读:
    Scrum 冲刺博客第五篇
    Scrum 冲刺博客第四篇
    Scrum 冲刺博客第三篇
    ajax send()
    form action中get post传递参数的问题
    struts2 iterator中if标签的使用
    表格内容自动换行
    从js向Action传中文参数出现乱码问题的解决方法
    java开发环境搭建
    Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/
  • 原文地址:https://www.cnblogs.com/yzxverygood/p/8470119.html
Copyright © 2011-2022 走看看