快速幂 HDU 3003
题意:有种叫PUPU的生物,刚出生是皮肤都是不透明的,如果经过一天阳光的照射,不透明皮肤会不变成透明的,透明皮肤会变成不透明的,阳光只能照射到最外层的不透明皮肤,求全部皮肤变过透明的天数(要求输出的的答案要模N,QAQ,因为这个卡了好久)
#include<stdio.h>
#include<cstring>
#include<iostream>
using namespace std;
long long int quick(long long int a,long long int b,long long int k)
{
long long int ret=1;
while (b)
{
if(b&1)//b&1判断不是不是奇数,,&位运算符“与”,在2进制里奇数最后一位一定是1,所以与1“与”,是1,而偶数与1“与”是0
{
ret=ret*a%k;
}
a=a*a%k;
b>>=1;//b>>=1就是b=b/2;
}
return ret;
}
int main ()
{
long long int n;
cin>>n;
while (n!=0)
{
cout<<quick(2,n-1,n)+1<<endl;
cin>>n;
}
return 0;
}

浙公网安备 33010602011771号