// 真难,需要理解快速幂求余,感觉面试不会考察,先跳过了。
int cuttingBamboo(int bamboo_len){if(bamboo_len <4)return bamboo_len -1;staticconst int MAX_VALUE=1e9+7;
int b = bamboo_len %3;
long rem =1, x =3;for(int a = bamboo_len/3-1; a >0; a /=2){if(a%2==1) rem =(rem * x)%MAX_VALUE;
x =(x * x)%MAX_VALUE;}if(b ==0)return(int)(rem *3%MAX_VALUE);if(b ==1)return(int)(rem *4%MAX_VALUE);return(int)(rem *6%MAX_VALUE);}
Loading Comments...