`
SunnyYoona
  • 浏览: 367616 次
社区版块
存档分类
最新评论

剑指Offer之数值的整数次方

 
阅读更多

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

输入:

输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。

输出:

对应每个测试案例,
输出一个浮点数代表答案,保留两位小数即可。

样例输入:
5
1.0 10
0.0 -5
1.0 0
1.2 5
2.0 -1
样例输出:
1.00e+00f
INF
1.00e+00f
2.49e+00f
5.00e-01f
提示:

请特别注意不同的编译器对于科学计数法格式输出中指数位数的差别。建议使用九度Online Judge所使用的编译环境。


/*********************************
*   日期:2013-11-9
*   作者:SJF0115
*   题号: 题目1514:数值的整数次方
*   来源:http://ac.jobdu.com/problem.php?pid=1514
*   结果:AC
*   来源:剑指Offer
*   总结:
**********************************/
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;

int flag = 1;

//判断double类型数据是否相等
int equal(double n,double m){
    if((n - m) > -0.0000001 && (n - m) < 0.0000001){
        return 1;
    }
    else{
        return 0;
    }
}

double Power(double n,int exponent){
    int i;
    double result = 1.0;
    //0^负数次方
    if(equal(n,0.0) && exponent < 0){
        flag = 0;
        return 0.0;
    }
    else{
        flag = 1;
        int absExponent = exponent;
        if(exponent < 0){
            absExponent = - exponent;
        }
        for(i = 0;i < absExponent;i++){
            result *= n;
        }
        if(exponent < 0){
            result = 1.0 / result;
        }
        return result;
    }
}


int main()
{
	int i,n,num,exponent;
	double base;
	while(scanf("%d",&n) != EOF){
        for(i = 0;i < n;i++){
            scanf("%lf %d",&base,&exponent);
            double result = Power(base,exponent);
            if(flag == 0){
                printf("INF\n");
            }
            else{
                printf("%.2ef\n",result);
            }
        }
	}
    return 0;
}





【另一种方法】





/*********************************
*   日期:2013-11-9
*   作者:SJF0115
*   题号: 题目1514:数值的整数次方
*   来源:http://ac.jobdu.com/problem.php?pid=1514
*   结果:AC
*   来源:剑指Offer
*   总结:
**********************************/
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;

int flag = 1;

//判断double类型数据是否相等
int equal(double n,double m){
    if((n - m) > -0.0000001 && (n - m) < 0.0000001){
        return 1;
    }
    else{
        return 0;
    }
}

double PowerOfPositive(double base,int exponent){
    if(exponent == 0){
        return 1;
    }
    else if(exponent == 1){
        return base;
    }
    else{
        //右移一位相等于除以2
        double result = PowerOfPositive(base,exponent >> 1);
        result *= result;
        //判断奇偶性
        if(exponent & 0x1 == 1){
            result *= base;
        }
        return result;
    }

}

double Power(double n,int exponent){
    int i;
    double result = 1.0;
    //0^负数次方
    if(equal(n,0.0) && exponent < 0){
        flag = 0;
        return 0.0;
    }
    else{
        flag = 1;
        int absExponent = exponent;
        if(exponent < 0){
            absExponent = - exponent;
        }
        result = PowerOfPositive(n,absExponent);
        if(exponent < 0){
            result = 1.0 / result;
        }
        return result;
    }
}


int main()
{
	int i,n,num,exponent;
	double base;
	while(scanf("%d",&n) != EOF){
        for(i = 0;i < n;i++){
            scanf("%lf %d",&base,&exponent);
            double result = Power(base,exponent);
            if(flag == 0){
                printf("INF\n");
            }
            else{
                printf("%.2ef\n",result);
            }
        }
	}
    return 0;
}



分享到:
评论

相关推荐

    Python《剑指offer》算法实现-数值的整数次方

    # Python实现《剑指offer》 部分代码自己添加了一些测试用例, 或者自己添加了一些功能 1. 初级程序员注重算法和数据结构 2. 事先做好准备,对工作有热情 3. 面试过程放松。不要急于写代码,了解清楚所要解决的问题,...

    《剑指Offer》题目及代码.zip

    《剑指Offer》 1. 赋值运算函数 2. 单例设计模式 3. 二维数组中查找目标值 4. 替换字符串中的空格 5. 从尾到头打印链表 6. 由前序和中序遍历重建二叉树 7. 用两个栈实现队列 8. 求旋转数组的最小数字 9. ...

    剑指Offer(Python多种思路实现):数值的整数次方

    剑指Offer(Python多种思路实现):数值的整数次方 面试16题: 题目:数值的整数次方 题:实现函数double Power(double base, int exponent),求base的exponent次方、不得使用库函数,同时不需要考虑大数问题。 解题...

    剑指offer 题16——数值的整数次方

    数值的整数次方 题目: 实现函数double Power(double base,int exponent), 求base得exponent次方。不得使用库函数,同时不需要考虑大数问题 因为不需要考虑大数问题,所以看起来似乎很简单,只需要累加就好 double ...

    剑指offer之python实现

    面试题11 数值的整数次方 面试题12 打印1到最大的n位数 面试题13 O(1)时间删除链表结点 面试题14 调整数组顺序使寄数位于偶数前面 3.4 代码的鲁棒性 面试题15 链表中倒数第k个结点 面试题16 反转链表 面试题17 合并...

    剑指offer算法题Python源码带详细思路注释(68道).zip

    翻转单词顺序列,反转链表,斐波那契数列,复杂链表的复制,构建乘积数组,和为s的连续整数序列,和为s的两个数字,滑动窗口的最大值,机器人的运动范围,剑指offer-python实现.docx,矩形覆盖,矩阵中的路径,连续子数组的最大...

    16:数值的整数次方(剑指offer第2版Python)

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 2、代码详解 先说结论: 特例:底数为0且指数为负,抛异常“0不能求倒数” equal_zero时,因为计算机内表示小数有误差,要写成abs...

    javalruleetcode-leetcode_by_py:他妈的leetcode与python

    java lru leetcode ...数值的整数次方 中等 剑指offer17 打印从1到最大的n位数 简单 剑指offer18 删除链表的节点 简单 剑指offer19 正则表达式匹配 困难 剑指offer20 表示数值的字符串 中等 剑指offe

    leetcode中文版-jianzhi-Offer-Leetcode:剑指Offer与Leetcode对应题目

    √数值的整数次方(溢出) -&gt; 打印从1到最大的n位数(溢出) -&gt; 没找到 √删除链表的节点 -&gt;(简单版) -&gt;(升级版) ×正则表达式匹配 -&gt; ×表示数值的字符串 -&gt; √调整数组顺序使奇数在偶数前 -&gt; √链表中倒数第K...

    sword-for-offer:使用Python3用优雅的方式实现《剑指Offer》中的题目

    使用Python3用pythonic的方式实现《剑指Offer 第二版》中的题目。拒绝直接“翻译”java等实现。代码有些并非原创,搬运了一些LeetCode中大神的优秀解法,比如:如何用一行代码实现顺时针打印矩阵。 基本所有题都包含...

    leetcode2-Coding-Interviews:剑指offer代码实现

    剑指offer代码实现,通过。 # Title Solution Tag Note LeetCode 1 二维数组中的查找 数组 2 替换空格 字符串 3 从尾到头打印链表 链表 4 重建二叉树 树 5 用两个栈实现队列 栈和队列 LeetCode 232 6 旋转数组的最小...

    完整学习笔记:《剑指offer》Java版代码实现

    第十一题 数值的整数次方 测试11 第十二题 打印1到最大的n晚数 测试12 第十三题 O(1)时间删除链表节点 测试13 第十四题 使数据库中的奇数位于偶数前面 测试14 第十五题 找链表中倒数第K个节点 测试15 第十六题 食品...

    Leetcode扑克-jianzhi-offer:剑指offer-Java题解

    剑指offer-Java题解 二维数组中的查找 - [行列递增的二维数组搜索]- leetcode 240 替换空格 从尾到头打印链表 重建二叉树 - [用前序和中序遍历序列构建二叉树] - leetcode 105 用两个栈实现队列 - [使用栈实现队列] ...

    leetcode迷宫问题-LeetCode:LeetCode刷题之剑指offer系列

    LeetCode之剑指offer系列刷题 剑指offer系列题目列表(C++实现) 题目名称和题号 题目链接 题目博客 刷题次数 类型 面试题01.06:字符串压缩 +2 查找+双指针 面试题03:数组中重复的数字 +2 查找 面试题04:二维数组...

    Coding-Interviews:Coding-Interviews(剑指offer代码)

    Interviews(剑指offer Java代码)二维数组中的查找替换空格从尾到头打印链表重建二叉树用两个栈实现队列旋转数组的最小数字斐波那契数列跳台阶变态跳台阶矩形覆盖二进制中1的个数数值的整数次方调整数组顺序使奇数...

    leetcode分类-nowcoder:牛客网学习,包括剑指offer,程序员面试金典,leetcode,公司模拟真题,数据结构等

    11数值的整数次方 14调整数组顺序使奇数位于偶数前面 15链表中倒数第k个结点 16反转链表 17合并两个排序的链表 18树的子结构 19二叉树的镜像 20顺时针打印矩阵 21包含min函数的栈 22栈的压入弹出序列 23从上往下打印...

    leetcode和剑指-Algorithm:剑指算法,leetcode,acm....等等,请访问并提供您的建议

    剑指offer 1.二位数组中的查找 2.替换空格 3.单链表:从尾到头打印链表 4.二叉树:重建二叉树 5.栈:用两个栈实现队列 6.旋转数组的最小数字 7.斐波那契数列 8.跳台阶 9.变态跳台阶 10.矩形覆盖 11.二进制中1的个数 12....

    丢失的最小正整数leetcode-Java_DataStructure:Java的数据结构和算法的学习

    12、数值的整数次方 13、调整数组顺序使奇数位于偶数前面 14、链表倒数第k个节点 15、反转链表 16、合并两个排序列表 17、树的子结构 18、二叉树的镜像 19、顺时针打印矩阵 20、包含min函数的栈 21、栈的压入、弹出...

    leetcode减绳子-jianzhi-Offer:jianzhi-Offer

    剑指offer在leetcode主站的对应题目。 赋值运算符函数 实现单例模式 数组中重复的数字 -&gt; (中文版) 二维数组中的查找 -&gt; 替换空格 -&gt; (中文版) 从尾到头打印链表 -&gt; (中文版) 重建二叉树 -&gt; 暂无 用两个栈实现...

    Leetcode扑克-coding-interviews:编码面试

    该项目为《剑指Offer》题解 OnlineJudge 题目 个人建议能使用LeetCode还是尽量用LeetCode。因为LeetCode题目接口更为规范,而且测试数据也更为全面。 牛客网 LeetCode 二维数组中的查找 240. Search a 2D Matrix II ...

Global site tag (gtag.js) - Google Analytics