940B Our Tanya is Crying Out Loud

Posted 水题收割者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
}

以上是关于940B Our Tanya is Crying Out Loud的主要内容,如果未能解决你的问题,请参考以下文章

大数据学习总结what is our foucus

Where we love is home, home that our feet may leave, but not our hearts.

Error: Another program is already listening on a port that one of our HTTP servers is configured to

supervisord 启动失败 Error: Another program is already listening on a port that one of our HTTP serve...

Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F(带填坑)

E - Tanya and Stairways