1.二分加速法(很容易遇到此类题)
来源:互联网 发布:手机号码测吉凶80算法 编辑:程序博客网 时间:2024/06/08 15:38
1.二分加速法。
详见求A的B次方
如果常规算的话,肯定会超时。可用二分加速法。
Problem Description
求A^B的最后三位数表示的整数。
说明:A^B的含义是“A的B次方”
说明:A^B的含义是“A的B次方”
Input
输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。
Output
对于每个测试实例,请输出A^B的最后三位表示的整数,每个输出占一行。#include<stdio.h>int ab(int n,int m){int sum;if(m==1)return n;if(n==1)return 1;sum=n;while(m/2){if(m%2==0){n=n%1000;sum=sum%1000*n;n=n*n;m=m/2;}else{n=n%1000;sum=sum*n%1000;sum=sum*n%1000;n=n*n;m=m/2;}}return sum%1000;}void main(){int n,m;while(scanf("%d%d",&n,&m)!=EOF){if(n!=0||m!=0){printf("%d\n",ab(n,m));}}}
这里看的是函数ab(),用二分加速求a的b次方,大大节省了运算时间。复杂度为logn
也称为幂乘算法,还有个经典应用为求fibonacci数列的第n项:
[fn+1 ,fn;fn,fn-1]=[1,1;1,0]的n次方,然后利用幂乘算,复杂度为logn。(矩阵打不出来)
0 0
- 1.二分加速法(很容易遇到此类题)
- 二分查找真的很容易错
- (面试很容易问)二分查找算法
- LIS 二分加速版
- 求a*b的后三位 二分加速法
- gdfzoj #786 很容易AC的题(AC自动机)
- special number(act book)二分模版在此
- 创建文件(很容易失败)
- Visual Studio 2008试用版的评估期结束解决办法(给遇到此类问题的朋友)
- C/C++ 笔试面试(2)——二分查找 的确遇到的笔试题
- simpson求积分,二分加速提高精度
- HDOJ_2035 人见人爱A^B –二分加速
- 内存移动-很容易混乱的题
- 很容易错的一道基础题
- PostMessage和SendMessage 区别(很容易忽略)
- HDU4727(题意很容易让人出错)
- switch用法(这个感觉很容易理解)
- 单词数(题目很容易读错)
- INTERSECT
- POJ2431 Expedition(排序+优先队列)
- MAC地址和IP地址的关系 .
- Ural 1119 Metro(DP) .
- 计算字符个数——来自华为OJ平台测试基础篇
- 1.二分加速法(很容易遇到此类题)
- nyoj 164&&poj2084 Game of Connections 【卡特兰
- windows程序设计篇——插入位图
- BZOJ 2048 2009国家集训队 书堆 数学算法 .
- 使用 IOS 自带 API 扫描二维码
- 李林APUE之进程的封装
- sicily1024
- 《数据挖掘概念与技术》学习笔记 .
- Android中相机和相册使用分析