您的位置:首页 > 其它

2018_蓝桥_pow()函数_次幂函数总结

2018-03-31 09:31 405 查看
c语言中pow()函数的用法和注意:

头文件:#include <math.h>

pow() 函数用来求 x 的 y 次幂(次方),其原型为:
double pow(double x, double y);

pow()用来计算以x 为底的 y 次方值,然后将结果返回。设返回值为 ret,则 ret = xy。

可能导致错误的情况:
如果底数 x 为负数并且指数 y 不是整数,将会导致 domain error 错误。
如果底数 x 和指数 y 都是 0,可能会导致 domain error 错误,也可能没有;这跟库的实现有关。
如果底数 x 是 0,指数 y 是负数,可能会导致 domain error 或 pole error 错误,也可能没有;这跟库的实现有关。
如果返回值 ret 太大或者太小,将会导致 range error 错误。

错误代码:
如果发生 domain error 错误,那么全局变量 errno 将被设置为  EDOM;
如果发生 pole error 或 range error 错误,那么全局变量 errno 将被设置为 ERANGE。
写算法提高快速幂题目,突发奇想地想用pow()函数了。真是太天真了。pow函数返回的是double类型的,能表示的数的范围也就是15,6位。而快速幂那一题有些数据光输入的数就十几位了,根本没法保存!给了40分,着实的够意思了。
    下面是快速幂那一题:
.

  算法提高 快速幂  时间限制:1.0s   内存限制:256.0MB    问题描述  给定A, B, P,求(A^B) mod P。输入格式  输入共一行。
  第一行有三个数,N, M, P。输出格式  输出共一行,表示所求。样例输入2 5 3样例输出2数据规模和约定  共10组数据
  对100%的数据,A, B为long long范围内的非负整数,P为int内的非负整数。
.
快速幂函数#include<iostream>
using namespace std;
int Pw(long long a,long long b,int c) {
int ret = 1;
a = a % c;
while (b>0) {
if (b%2==1) {//当b是奇数的时候
ret = ret * a%c;
}
b /= 2;;
a = a * a%c;
}
return ret;
}
int main() {
long long int a, b;
int c;
cin >> a >> b >> c;
cout << Pw(a, b, c) << endl;
return 0;
}
快速幂相关博客:点击打开链接
.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: