zoukankan      html  css  js  c++  java
  • 陕西师范大学第七届程序设计竞赛网络同步赛 F WWX的礼物【数学/k进制下x^n的位数/log】

    链接:https://www.nowcoder.com/acm/contest/121/F
    来源:牛客网

    题目描述

    WWX的女朋友送给了他一个礼物,可是礼物却被一把K进制密码锁锁住了。在礼物盒上还有一张出自她的女朋友的纸条:”嘿嘿~~密码我会在520那天告诉你”。但是WWX想提前知道礼物是什么,所以找到了这把锁的制造者Ddjing。Ddjing告诉他,我只知道这把锁的加密原理:在锁的表面会定期显示两个十进制数x和n,如果你能在有限时间算出来将n个x相乘的结果,其用k进制表示时的长度就是这把锁的密码。于是他又找到了号称“人体计算机”的黑猫,黑猫在键盘上疯狂操作了一波后,告诉他这道题可能要对double取整,想要知道具体方法,就要和他进行py交易,为了保住WWX的清白,你能帮帮他么?

    输入描述:

    第一行是一个整数T(1<=T<=500),表示有T组数据.
    接下来的T行,每行依次输入三个十进制整数
    x(2<=x<=1e+3),n(2<=n<=1e+3),k(2<=k<=30),以空格间隔。

    输出描述:

    对于每组输入数据,首先输出一个"Case ",然后依次输出它的组号、”: ”和礼物盒的密码。
    每个”Case”和每个”:”后均有一个空格。
    示例1

    输入

    3
    8 635 2
    2 100 3
    10 1000 10

    输出

    Case 1: 1906
    Case 2: 64
    Case 3: 1001
    示例2

    输入

    1
    1000 1000 2

    输出

    Case 1: 9966

    备注:

    1.
    在对一个double型的浮点数进行向下取整时,可使用如下操作。
    const double EPS = 1e-8;
    double a=1234.56;
    int x=long int(a+EPS);

    【分析】:

    10进制数字x的位数:(int)(log10(x))+1

    k进制数字x的位数:(int)(logk(x)) +1

    k进制数字x^n的位数:(int)(logk(x^n)) +1 = (int) ( n * logk(x) + 1 )  = (int) (n * log10(x) / log10(k) ) +  1

    用到了log的一些性质和换底公式。

    【代码】:

    #include <bits/stdc++.h>
    using namespace std;
    
    #define EPS 1e-8
    int main()
    {
        int t,x,n,k,ca=1;
        cin>>t;
        while(t--)
        {
            cin>>x>>n>>k;
            int ans = (int) (n*log10(x)/log10(k) + EPS);
            printf("Case %d: %d
    ",ca++,ans+1);
        }
        return 0;
    }
  • 相关阅读:
    点击<a>页面跳转解决办法/跨域请求,JSONP
    笔记一下NODEJS建站
    地精排序Gnome Sort ----(排序算法十)
    鸡尾酒排序Cocktail Sort(排序算法九)
    鸽巢排序Pigeonhole Sort----(排序算法八)
    桶排序(Bucket Sort)----(排序算法七)
    堆排序----(排序算法六)
    简单选择排序算法----(排序算法五)
    快速排序----(排序算法四)
    冒泡排序法---排序算法(三)
  • 原文地址:https://www.cnblogs.com/Roni-i/p/9037688.html
Copyright © 2011-2022 走看看