陕西师范大学第七届程序设计竞赛 F -WWX的礼物 【精度】【规律】

题目描述 
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);

点击打开链接

#include<bits/stdc++.h>
using namespace std;
const double EPS = 0.00000001;
//double a = 1234.56;
int main()
{
    int flag = 0;
    int N;
    scanf("%d", &N);
    while(N--)
    {
        double n, m, k;
        scanf("%lf%lf%lf", &n, &m, &k);
        double b = log10(n);
        double a = log10(k);
        double x = b / a;
        //cout<<x<<endl;
        long int ans;
        //cout<<x<<endl;
        //cout<<EPS<<endl;
        x+=EPS;
        ans = x * m + 1;
        printf("Case %d: ",++flag);
        cout<<ans<<endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值