hdu1061(2015-N1):1.快速幂;2.找规律

1.快速幂

原理:求a的b次方,将b转化为二进制数,该二进制位第i位的权是2^(i-1),

例如

11的二进制是1011

11 = 23×1 + 22×0 + 21×1 + 2o×1

因此,我们将a11转化为算

实现

快速幂可以用位运算来实现

and 1{也就是取b的二进制最低位(即第0位) 判断b是否为奇数,是则为1}

shr 1{就是去掉b的二进制最低位(即第0位)}

C++实现为

b & 1//取b二进制的最低位,判断和1是否相同,相同返回1,否则返回0,可用于判断奇偶

b>>1//把b的二进制右移一位,即去掉其二进制位的最低位.

递归版:

ll pow(ll a,ll i){

  if (i==0) return 1;

  int temp=pow(a,i>>1);

  temp=temp*temp%MOD;

  if (i&1) temp=(ll)temp*a%MOD;

  return temp%MOD;

}

非递归版:

ll f(ll a,ll b,ll n){

  int t,y;

  t=1; y=a;

  while (b!=0){

    if (b&1==1) t=t*y%n;

    y=y*y%n; b=b>>1;

  }

  return t;

原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8490659.html

时间: 2024-10-28 14:19:52

hdu1061(2015-N1):1.快速幂;2.找规律的相关文章

A - Number Sequence(矩阵快速幂或者找周期)

Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). Input The input consists of multiple test cases. Each test case contains 3

ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies (打表找规律+快速幂)

题目链接:https://nanti.jisuanke.com/t/31716 题目大意:有n个孩子和n个糖果,现在让n个孩子排成一列,一个一个发糖果,每个孩子随机挑选x个糖果给他,x>=1,直到无糖果剩余为止.给出数字n,问有多少种分发糖果的方法. 样例输入 复制 1 4 样例输出 复制 8 解题思路:我们可以这样想,一个糖果的话,应该是只有1种方法记为x1,如果是两个糖果的话,有两种方法即为x2,分别为(1,1)和(2),从中我们可以想到如果n个糖果的话,就可以分为第n个人取1个的话就有x(

多校第九场:贪心+矩阵快速幂中间优化+线性递推&线段树递推

HDU 4968 Improving the GPA 思路:贪心的搞吧!比赛的时候想了好久,然后才发现了点规律,然后乱搞1A. 因为贪心嘛!大的情况就是刚开始每个人的分数都是最大的最小值,即绩点4.0的最低分数85,然后最后一个数设为剩余的分数,然后如果小于60就从第一个分数补到这个分数来,然后最后一个分数还小于60,那就用第二个补--依次往下搞,那时我也不知道这样就搞出答案了,我还没证明这个对不对呢,哈哈. 小的情况:小的情况就是先假设每个人都是绩点最小的最大分数,即绩点2.0的最大分数69,

WustOJ 1575 Gingers and Mints(快速幂 + dfs )

1575: Gingers and Mints Time Limit: 1 Sec  Memory Limit: 128 MB   64bit IO Format: %lldSubmitted: 24  Accepted: 13[Submit][Status][Web Board] Description fcbruce owns a farmland, the farmland has n * m grids. Some of the grids are stones, rich soil i

UVA 11609 Teams 组合数学+快速幂

In a galaxy far far away there is an ancient game played among the planets. The specialty of the gameis that there is no limitation on the number of players in each team, as long as there is a captain inthe team. (The game is totally strategic, so so

HDU 4990 Reading comprehension (找规律+矩阵快速幂)

题目链接:HDU 4990 Reading comprehension 题目给的一个程序其实就是一个公式:当N=1时 f[n]=1,当n>1时,n为奇数f[n]=2*f[n-1]+1,n为偶数f[n]=2*f[n-1]. 先不取模,计算前十个找规律.得到一个递推公式:f[n]=2*f[n-2]+f[n-1]+1 然后快速幂解决之. 给出一个神奇的网站(找数列通项):http://oeis.org/ AC代码: #include<stdio.h> #include<string.h&

51nod-1537 1537 分解(矩阵快速幂+找规律)

题目链接: 1537 分解 问(1+sqrt(2)) ^n  能否分解成 sqrt(m) +sqrt(m-1)的形式 如果可以 输出 m%1e9+7 否则 输出no Input 一行,一个数n.(n<=10^18) Output 一行,如果不存在m输出no,否则输出m%1e9+7 Input示例 2 Output示例 9 题意: 思路: 发现跟奇数偶数有关系,然后就找出递推式,然后就快速幂,然后就A了; AC代码: #include <iostream> #include <cst

ACM学习历程—SNNUOJ 1110 A Simple Problem(递推 &amp;&amp; 逆元 &amp;&amp; 组合数学 &amp;&amp; 快速幂)(2015陕西省大学生程序设计竞赛K题)

Description Assuming a finite – radius “ball” which is on an N dimension is cut with a “knife” of N-1 dimension. How many pieces will the “ball” be cut into most?However, it’s impossible to understand the following statement without any explanation.L

HDU 4990 Reading comprehension(找规律+矩阵快速幂)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4990 Problem Description Read the program below carefully then answer the question. #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include<iostream> #include