zoukankan      html  css  js  c++  java
  • nyoj 633 幂

    幂 nyoj 633 应用数学

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:4
     
    描述
    在学习循环的时候,我们都练习过利用循环计算a的k次方。现在给定整数k和一个整数m,请你求出对应的整数a,使得a的k次方是不超过m并且最接近m的数值。 
     
    输入
    一个整数T表示测试组数。
    对于每组测试数据:
    给定两个整数k和m 

    数据范围:
    1 <= T <= 20
    1 <= k <= 10^9
    0 <= a <= 10^9
    0 <= M <= 10^100
    输出
    对于每组数据,输出一个整数a占一行。
    样例输入
    2
    2 4
    3 27 
    样例输出
    2
    3 

    分析:
    a^k == m
    ==> log10(a^k) = k*log10(a) = log10(m)
    ==> log10(a) = log10(m)/k
    ==> a = 10^[log10(m)/k]
    但是应为中间结果可能会有小数产生 而a又要是一个整数 所以a^m可能不一定是最接近m的 (小数有误差导致的)
    但可以从a开始递增开始判断 (a+1)^k < m 如果成立 则a++ 就这样一直判断下去

    附上代码:
    /*
    author:谦智
    幂 nyoj 633 应用数学 
    */
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int main() {
      int t;
      cin >> t;
      while (t--) {
        double k, m;
        cin >> k >> m;
        int a = pow(10,(log10(m))/k);
        while (pow(a+1,k) - m < 1e-6) {
          a++;
        }
        cout << a << endl;
      }
    } 
     
  • 相关阅读:
    super与this的区别?
    springboot(4)-thymeleaf
    springboot(3)-自定义josn
    springboot(2)-Http协议接口开发
    springboot(1)-HelloWorld
    SpringSecurityOauth2.0
    Docker 应用部署
    RabbitMQ02
    RabbitMQ01
    011通用寄存器
  • 原文地址:https://www.cnblogs.com/dream-it-possible/p/8505218.html
Copyright © 2011-2022 走看看