51Nod1046 A^B Mod C(C语言)

来源:互联网 发布:帝国cms 文字水印 编辑:程序博客网 时间:2024/05/22 09:10

给出3个正整数A B C,求A^B Mod C。
例如,3 5 8,3^5 Mod 8 = 3。
Input
3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)
Output
输出计算结果
Input示例
3 5 8
Output示例
3


C语言AC代码

#include<stdio.h>int PowerMod(long long a,long long b,long long c){    int ans=1;    a=a%c;    while(b>0)    {        if(b%2==1)            ans=ans*a%c;        a=a*a%c;        b=b/2;    }    return ans; }int main(){    long long a,b,c;    scanf("%lld%lld%lld",&a,&b,&c);    a=PowerMod(a,b,c);    printf("%lld\n",a);    return 0;}
思路:快速幂取余,具体参见我这篇博客咯~http://blog.csdn.net/sinat_39591298/article/details/76110919

逐步缩小范围法是一种常见的思维方法。二分查找便是基于这种思路,它遵循分治三步法,把原序列划分成元素个数尽量接近的两个子序列,然后递归查找。二分查找也使用于有序序列,时间复杂度为O(logn)。(摘自《算法竞赛入门经典(第2版)》)

尽管可以用递归实现,但一般把二分查找写成非递归的:本题就是二分查找,通过迭代实现。

心得:要真正的掌握,不多练习是不行的。




原创粉丝点击