题目描述:
给定一个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
#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; }
写代码是一种艺术,甚于蒙娜丽莎的微笑。
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 我在厂里搞 wine 的日子
· 如何通过向量化技术比较两段文本是否相似?
· 35+程序员的转型之路:经济寒冬中的希望与策略
· JavaScript中如何遍历对象?
· 领域模型应用
· 独立项目运营一周年经验分享
· 一款开源免费、通用的 WPF 主题控件包
· 独立开发,这条路可行吗?
· 【定时任务核心】究竟是谁在负责盯着时间,并在恰当时机触发任务?
· 解决了AI聊天的10个痛点后,我又做了一个新功能:交叉分析表