惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
G
Google Developers Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
有赞技术团队
有赞技术团队
Vercel News
Vercel News
MongoDB | Blog
MongoDB | Blog
M
MIT News - Artificial intelligence
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
B
Blog RSS Feed
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
The Cloudflare Blog
B
Blog
C
Check Point Blog
Stack Overflow Blog
Stack Overflow Blog
IT之家
IT之家
U
Unit 42
D
Docker
月光博客
月光博客
aimingoo的专栏
aimingoo的专栏
博客园 - Franky
A
About on SuperTechFans

博客园 - blues667

Alibaba Cloud 4 (CentOS 8) 安装记录(2026.8) 职业教育教师的成长与发展(下)--赵开华-北京吉利学院副校长(教育部师德师风讲座) 职业教育教师的成长与发展(上)--赵开华-北京吉利学院副校长(教育部师德师风讲座) 腾讯元宝推荐的 YouTube 视频下载方法(2026.3) Linux 上安装 cheat 命令的过程 康荣生老师(大连海事大学、华东理工大学)介绍 【程序算法题】洛谷, P1760 通天之汉诺塔, java实现。 程序题:洛谷, P5723 【深基4.例13】质数口袋 apache 2.4 设置每个Linux用户, 可以通过www访问自己的个人网站主目录, 形式为 202.118.88.66/~username 这样的形式, httpd.conf 应该进行哪些修改? 一轴徐徐展开的声纹画卷 导创: 陈建社 回忆我的高中语文老师,陈光浩老师 TextPad 编译Java时,出错信息中的中文出现乱码,一种解决方法 古稀不稀,七十感怀 陈建社 2025.1.17 回忆康荣生老师 阿里云服务器所受攻击的记录(2024) vsftpd 的图形界面配置工具有哪些 当前,Linux中的内存页面调度算法 云雀妈妈和蛇大哥 【童话故事】 CentOS 9 安装 google Chrome Web 浏览器的一种简单方法(2024.9) Linux命令点滴(2024.7~) Java 学习知识点汇集(2024.6) 锁定某个Linux用户的账号
《学堂在线》清华郑莉老师的《Java程序设计 2025春》习题和程...
blues667 · 2025-05-29 · via 博客园 - blues667

实现x的n次方,x为类型为double,n的类型为int. 给定输入为x n, 输出x的n次方结果。

输入描述  

输出描述   

示例1:

限制   时间:1000ms  空间:512MB

/*给讯飞星火提示词:帮我用Java写一个最优化的 double pow( double x, int n) 函数。
讯飞星火给出了如下程序实现, 该实现采用了快速幂算法(Exponentiation by Squaring),时间复杂度为 O(log n),并且处理了负指数的情况。
这种程序写法或许不应在Java程序设计这样的入门课中标注难度为1/5。不过作为清华的课程,或许可以理解。
*/

import java.util.Scanner;

class Main {
  public static double pow(double x, int n) {
    if (x == 0.0) {
      return (n == 0) ? 1.0 : 0.0;
    }
    if (n == 0) {
      return 1.0;
    }
    if (n < 0) {
      x = 1.0 / x;
      n = -n;
    }
    double result = 1.0;
    double base = x;
    while (n > 0) {
      if ((n & 1) == 1) { // 如果 n 是奇数
        result *= base;
      }
      base *= base; // 平方基数
      n >>= 1; // 右移一位,相当于 n /= 2
    }
    return result; 
  }
  
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    double x = in.nextDouble();
    int n = in.nextInt();
    System.out.print(pow(x, n));
    in.close();
  }
}