7-2 快速幂 (10 分)

7-2 快速幂 (10 分)

输入两个整数a、b,求a^b。结果保证在long long int范围内。

输入格式:

测试数据有多组,处理到文件尾。每组测试输入两个正整数a,b(1≤a,b≤62)。

输出格式:

对于每组测试,输出a^b的结果。

输入样例:

2 4

输出样例:

16

算法分析:题目的要求结果在长整型范围内,就是在提醒我们要控制运行时间,也暗示着这个题目是要压缩运行时间的, 正常的利用循环也可以求解,但是根据题意嘛,是什么算法,咱就用什么算法,在这里需要用一种快速幂运算的算法,其实也就是分治法的一种应用。

在这里还有一个比较坑的问题,就是他有多组数据,我们是要一直输入的,在C语言中有while(scanf("%d",&a)!=EOF),在java中有while(in.hasnext())来控制输入数据的截止。

代码实现:

//C语言实现
// #include<stdio.h>
// long quick(long a,long b)
// {
//     if(b<=1)return a;
//     long temp=quick(a,b/2);//这里就是我们分解的步骤。可以结合二分法来看
//     if(b%2==0)return temp*temp;//偶数计算
//     else return temp *temp*a;//奇数计算
// }
// int main()
// {
//     long a,b;
//     long sum;
//     while(scanf("%ld %ld",&a,&b)!=EOF)//!!!!!!特别注意
//     {
//         printf("%ld\n",quick(a,b));
//     }
    
// }


//java实现
import java.util.Scanner;
public class Main {
    private static long a;
    private static long b;
    public static void main(String [] args)
    {
        Scanner in=new Scanner(System.in);
        while(in.hasNext())
        {
            a=in.nextLong();
            b=in.nextLong();
            System.out.println(quick(b));
        }
        in.close();
    }

    public static long quick(long b)
    {
        if(b<=1) return a;
        long temp=quick(b/2);
        if(b%2==0) return temp*temp;
        else return temp*temp*a;
    }
}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
【项目说明】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源介绍】 数据结构课设-基于C++和QT实现的快速大数计算器源码含设计报告.zip 1 实验内容与要求 3 1.1 问题描述 3 1.2基本要求 3 1.3实现提示 4 1.4 运行结果要求及考核要求 4 2 设计思路 5 2.1 基本思路 5 2.1.1 问题分析 5 2.1.2 加法设计 6 2.1.3 减法设计 7 2.1.4 乘法设计 9 2.1.5 除法设计 9 2.1.6 指数设计 10 2.2 类的设计 11 2.2.1 链表类的设计 11 2.2.2 页面类的设计 13 2.3 额外要求的设计 13 2.3.1 计时功能的实现 13 2.3.2 正则表达式判定输入和去除前导零的实现 14 3 调试分析及测试 14 3.1 调试中的错误 15 3.2 测试分析 15 3.2.1 输入各情况测试 15 3.2.2 加法各种情况测试 17 3.2.3 减法各种情况测试 22 3.2.4 乘法各种情况测试 26 3.2.5 指数各种情况测试 27 3.2.6 文件读写各种情况测试 29 4 课程设计总结 29

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星辰和他的梦

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值