1. 程式人生 > >11.25 快速冪+位運算

11.25 快速冪+位運算

位運算子

位運算子是把數字看作二進位制來進行計算的

運算子 描述
& 按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0
l
~ 按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1。~x 類似於 -x-1
<< 左移動運算子:運算數的各二進位全部左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0。
>> 右移動運算子:把">>“左邊的運算數的各二進位全部右移若干位,”>>"右邊的數指定移動的位數

位運算子的應用

判斷奇偶
一個數&1只剩末位數,如果等於1,則為奇數(1*2**0=1):等於0則為偶數

快速冪

快速冪用來提高高次冪運算的速度,原理:例a^13, 將13換成二進位制是1101:13= 2³×1 + 2²×1+ 2¹×0 + 2º×1
.a^13=a**(20+22+23)
13= 2³×1 + 2²×1+ 2¹×0 + 2º×1
程式碼

//用快速冪 對冪運算取個位數
#include <stdio.h>
int main()
{
    int a,b,c;
    c=1;
    while(scanf("%d",&a)!=EOF){
        b=a%10;
        while(a!=0){
            if (a&1){
                c=c*b%10;
            }
            b=b*b%10;
            a>>=1;   //二進位制向右移一位等於除2
        }
    printf("%d\n",c);
    c=1;
    }
    return 0;
}

相關推薦

11.25 快速+運算

位運算子 位運算子是把數字看作二進位制來進行計算的 運算子 描述 & 按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0

11.25 快速+運算

位運算子 位運算子是把數字看作二進位制來進行計算的 運算子 描述 & 按位與運算子:參與運算的兩個值,如果兩個相應位都為1,則該位的結果為1,否則為0 l ~ 按位取反運算子:對資料的每個二進位制位取反,即把1變為0,把0變為1

T^T問題求個位數(快速||運算||找規律)

原始碼培訓: 今日水題 描述 T^T這個很像一個流淚的表情是不是!其實,它是T的T次方啦~。 當T比較大的時候T^T會非常大,現在只要你求這個數的個位就可以啦! 輸入 輸入包括多組測試資料,每個測試資料只有一個數字 解題思路(一) 看到只取個位數,第一反應找規

HDU - 2276 運算矩陣快速

struct str mod const turn down log line 矩陣快速冪 挺有意思的一道題 要會運用一些常見的位運算操作進行優化 題目的本質就是要求下面的式子 \(dp[i][j+1]=(dp[i-1][j]+dp[i][j]) mod 2\) (第\(i

快速(原理,一般,遞迴,運算演算法)

  因為一開始對位運算不是很明白,加上2進位制權值忽然一說像聽了一個新詞,第一次碰見放下了,第二次也,,第三次也,今天就好好把它給看明白。 概念:快速計算底數的n次冪。 例題:(想明白就自己拿出筆紙耐心看下去,自己寫出來的才有自信說看明白了)    求a的b次方;

洛谷 P1226 取余運算||快速 題解

代碼 amp base iostream div 其中 tro std strong 此文為博主原創題解,轉載時請通知博主,並把原文鏈接放在正文醒目位置。 題目鏈接:https://www.luogu.org/problem/show?pid=1226 題目描述

Luogu P1226 取余運算||快速(數論,分治)

span 水題 spa 數論 urn 等於 註意 nbsp int P1226 取余運算||快速冪 題目描述 輸入b,p,k的值,求b^p mod k的值。其中b,p,k*k為長整型數。 輸入輸出格式 輸入格式: 三個整數b,p,k. 輸出格式: 輸出“b^p

快速||取余運算 (分治算法)

strong 分享 .cn img 思路 while 指數 快速冪 ron #include<iostream>using namespace std;long b,p,k;long skt=1;int we,tsm;int ksm(long b,long p

洛谷——P1226 取余運算||快速

adg tdi ring span region 復制 ios ostream 結果 P1226 取余運算||快速冪 題目描述 輸入b,p,k的值,求b^p mod k的值。其中b,p,k*k為長整型數。 輸入輸出格式 輸入格式: 三個整數b,p,k.

基礎快速運算

std -a main 基礎 快速求冪 原創 之前 暫時 names 淺析快速冪 首先,舉個例子(假設數據全為long long型)。 例題:輸入a,n, 求a的n次方(a > 0)。 看到這個例題,肯定是思路滾滾來啊,不就是相當於n個a相乘嗎?於是乎,就上代碼

洛谷P1226 快速||取餘運算 題解

題目描述 輸入b,p,k的值,求b^p mod k的值。其中b,p,k*k為長整型數。 輸入輸出格式 輸入格式: 三個整數b,p,k. 輸出格式: 輸出“b^p mod k=s” s為運算結果 輸入輸出樣例 輸入樣例#1: 2 10 9 輸出樣例#

2018.11.08【CodeForces989】E. A Trance of Nightfall(矩陣快速)(倍增)

傳送門 解析: 考場上本來想寫倍增來著結果發現這個東西可以矩陣快速冪轉移,所以倍增陣列就用來優化矩陣快速冪了。。。(省去每次求出轉移矩陣的一個 O

C語言 if、for、goto、運算段、函式(2018.11.18)

if語句 if(表示式) { 語句1; } else { 語句2; } 在使用if語句判斷條件的時候要注意符號的結合性 eg: if(5 <= x <= 20) if(5 <= x && x <= 20) 語句1與語句2判斷的

51nod 1004 n^n的末數字 快速

給出一個整數N,輸出N^N(N的N次方)的十進位制表示的末位數字。   快速冪淦爆一切!!!! 大大後天會寫個快速冪演算法的講解 XD   寫了 在下面 https://blog.csdn.net/weixin_41544329/article/detai

【模板】快速||取餘運算

拿一個樣例說話吧: 2^1=2 2%9=2 2^2=4 4%9=4 2^3=8 8%9=8 2^4=16 16%9=7 2^5=32 32%9=5 2^6=64 64%9=1 2^7=128 128%9=2 通過這個你能發現什麼呢? 自然就是餘數都是有規律的。 是不是讓快速冪變得淺顯易懂了。

大數取模運算快速取模運算

1.快速冪取模 快速冪取模就是在O(logn)內求出a^n mod b的值。演算法的原理是ab mod c=(a mod c)(b mod c)mod c  long exp_mod(long a,long n,long b) { long t; if

NOIP模擬 K進制(進制轉換+快速

【題目描述】 給定一個K(2<=K<=16)進位制數a,判斷a是否能被K-1整除。 【輸入格式】 第一行是一個整數t(1<=t<=50),表示測試點數量。 對於每組資料,第一行一個整數K,表示進位制。 第二行一個K進位制數,表示a。保證a是合

埃式篩法+快速運算

1.埃式篩法 應用:對很多整數進行素性測試-->要列舉n以內的素數 思路:2--n範圍內的所有整數,依次遍歷。遍歷過程中如果該數是素數則將其的倍數都劃去(可以想象他的倍數一定為非素數)。遍歷完成後。就可以列舉n以內的素數了。 模板: void sieve(int

矩陣運算快速快速計算線性遞推式

斐波那契數列 f(0)=0; f(1)=1; f(n)=f(n-1)+f(n-2),n>1 從上面這個方程中我們可以看到很明顯的遞推關係,當n>1的時候很明顯發現會有一個關係式,但是實際上我們在做運算的時候,如果一步一步的按照遞推式計算,將會消耗大量的時間(最短

使用運算判斷整數是否可被2的(2、4、8、16……)整除?

作者:CodeArhat  來源:CSDN  原文:https://blog.csdn.net/codearhat/article/details/6821990    // 大部分位運算的技巧早在幾十年前就被前輩們在有限的計算環境下“榨”出來了。 /