国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

AcWing90. 64位整數(shù)乘法

這篇具有很好參考價值的文章主要介紹了AcWing90. 64位整數(shù)乘法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

a a a b b b p p p 取模的值。

輸入格式

第一行輸入整數(shù) a a a,第二行輸入整數(shù) b b b,第三行輸入整數(shù) p p p。

輸出格式

輸出一個整數(shù),表示 a*b mod p 的值。

數(shù)據(jù)范圍

1 ≤ a , b , p ≤ 1 0 18 1≤a,b,p≤10^{18} 1a,b,p1018

輸入樣例

3
4
5

輸出樣例

2

思路

C++ 內(nèi)置的最高整數(shù)類型是 64 位,現(xiàn)在 a ? b a * b a?b mod p p p 中的三個變量 a , b , p a, b, p a,b,p 都在 1 0 18 10^{18} 1018 級別,則不存在一個可供強制轉(zhuǎn)換的 128 位整數(shù)類型,需要一些特殊的處理辦法。

類似快速冪的思想,把整數(shù) b b b 用二進制表示,即 b = c k ? 1 2 k ? 1 + c k ? 2 2 k ? 2 + . . . + c 0 2 0 b = c_{k-1}2^{k-1} + c_{k-2}2^{k-2} + ... + c_02^0 b=ck?1?2k?1+ck?2?2k?2+...+c0?20,則 a ? b = c k ? 1 ? a ? 2 k ? 1 + c k ? 2 ? a ? 2 k ? 2 + . . . + c 0 ? a ? 2 0 a * b = c_{k-1} * a * 2^{k-1} + c_{k-2} * a * 2^{k-2} + ... + c_{0} * a * 2^{0} a?b=ck?1??a?2k?1+ck?2??a?2k?2+...+c0??a?20。

因為 a ? 2 i = ( a ? 2 i ? 1 ) ? 2 a * 2^{i} = (a * 2 ^{i-1}) * 2 a?2i=(a?2i?1)?2,若已求出 a ? 2 i ? 1 a * 2^{i-1} a?2i?1 mod p p p,則計算 ( a ? 2 i ? 1 ) ? 2 (a * 2 ^{i-1}) *2 (a?2i?1)?2 mod p p p 時,運算過程中每一步的結(jié)果都不超過 2 ? 1 0 18 2 * 10^{18} 2?1018,仍然在 64 位整數(shù) long long 的表示范圍內(nèi),所以很容易通過 k k k 次遞推求出每個乘積項。當 c i = 1 c_i = 1 ci?=1 時,把該乘積項累加到答案中即可。

時間復(fù)雜度為 O ( l o g 2 b ) O(log_2b) O(log2?b)文章來源地址http://www.zghlxwxcb.cn/news/detail-716423.html

代碼

#include <cstdio>

using namespace std;

typedef long long ll;

ll mul(ll a, ll b, ll p) {
    
    ll ans = 0;
    
    while (b) {
        if (b & 1) ans = (ans + a) % p;
        b >>= 1;
        a = a * 2 % p;
    }
    
    return ans;
}

int main() {
    ll a, b, p;
    scanf("%lld%ld%lld", &a, &b, &p);
    printf("%lld\n", mul(a, b, p));
    return 0;
}

到了這里,關(guān)于AcWing90. 64位整數(shù)乘法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 匯編實驗4(99乘法表,整數(shù)分解,素數(shù)環(huán),迷宮問題)【棧傳參,遞歸,尋址方式】

    匯編實驗4(99乘法表,整數(shù)分解,素數(shù)環(huán),迷宮問題)【棧傳參,遞歸,尋址方式】

    目錄 一、99乘法表 匯編代碼 效果 二、整數(shù)拆分 問題描述 c代碼 匯編代碼 效果 三、素數(shù)環(huán) 問題描述 c代碼 效果 四、迷宮問題 問題描述 c代碼 匯編代碼 效果 匯編代碼 效果 貌似有點問題,忘了把運算結(jié)果加上...... 問題描述 問題描述 輸入一個N,輸出所有拆分的方式。 如

    2023年04月09日
    瀏覽(24)
  • FPGA 移位運算與乘法

    FPGA 移位運算與乘法

    ?????????已知d為一個8位數(shù),請在每個時鐘周期分別輸出該數(shù)乘1/3/7/8,并輸出一個信號通知此時刻輸入的d有效(d給出的信號的上升沿表示寫入有效) ? ? ? ? ? 復(fù)位信號高有效,低復(fù)位;在inpu_grant上升沿到來時,取一次d的值,并且4個時鐘周期取一次;out是將inpu_grant取

    2024年01月16日
    瀏覽(15)
  • 大數(shù)運算(加法,減法,乘法,除法)

    大數(shù)運算(加法,減法,乘法,除法)

    目錄 一.大數(shù)加法 1.題目描述 2.問題分析 3.代碼實現(xiàn) 二.大數(shù)減法 1.題目描述 2.問題分析 3.代碼實現(xiàn) 三.大數(shù)乘法 1.題目描述 2.問題分析 3.代碼實現(xiàn) 四.大數(shù)除法 1.題目描述 2.問題分析 3.代碼實現(xiàn) 以字符串的形式讀入兩個數(shù)字,編寫一個函數(shù)計算它們的和,以字符串形式返回。

    2024年02月07日
    瀏覽(28)
  • 矩陣乘法實現(xiàn)卷積運算

    矩陣乘法實現(xiàn)卷積運算

    ????????矩陣根據(jù)卷積核的大小進行,從左到右、從上到i 下 的移動,對應(yīng)數(shù)據(jù)相乘再相加得到的數(shù)據(jù)為該區(qū)域的值。 ??????? ??????? ? ? ? ? 原理:根據(jù)對于相乘相加的機制,發(fā)現(xiàn)通過對卷積核填零構(gòu)成和輸入矩陣大小一致的矩陣,然后展平拼接起來,

    2024年02月12日
    瀏覽(16)
  • 「Verilog學(xué)習(xí)筆記」移位運算與乘法

    「Verilog學(xué)習(xí)筆記」移位運算與乘法

    專欄前言 本專欄的內(nèi)容主要是記錄本人學(xué)習(xí)Verilog過程中的一些知識點,刷題網(wǎng)站用的是牛客網(wǎng) ? 分析? 1、在硬件中進行乘除法運算是比較消耗資源的一種方法,想要在不影響延遲并盡量減少資源消耗,必須從硬件的特點上進行設(shè)計。根據(jù)寄存器的原理,由于是二進制,所以

    2024年02月05日
    瀏覽(15)
  • Verilog|有無符號加法與乘法運算

    Verilog|有無符號加法與乘法運算

    一、無符號: 直接運算 二、有符號與無符號: 強制當作無符號運算 如c=a+b,a、b四位,c五位,計算時Verilog會將a和b擴展到五位再做加法,如果ab中有無符號數(shù),則展寬會按照無符號數(shù)來,就是高位補0,因此有符號數(shù)結(jié)果將不正確。 解決:$signed(),c=a+$signed(b),擴展會按照有符

    2024年02月14日
    瀏覽(17)
  • [C++/PTA] 矩陣的乘法運算

    線性代數(shù)中的矩陣可以表示為一個row*column的二維數(shù)組,當row和column均為1時,退化為一個數(shù),當row為1時,為一個行向量,當column為1時,為一個列向量。 建立一個整數(shù)矩陣類matrix,其私有數(shù)據(jù)成員如下: 建立該整數(shù)矩陣類matrix構(gòu)造函數(shù); 建立一個 *(乘號)的運算符重載,

    2024年02月04日
    瀏覽(18)
  • 在simulink中進行矩陣的乘法運算

    在simulink中進行矩陣的乘法運算

    雙擊 product 選擇為 Matirx 要使用 Reshape 將矩陣排列成矩陣模式 Matlab 的是按列讀取向量,按列放置向量 1*4 向量或者 4*1 向量,MATLAB 都只認為是 4 維向量,而不是分別的行向量或者列向量 使用矩陣乘法,必須 reshape 重塑矩陣維度

    2024年02月11日
    瀏覽(16)
  • MATLAB數(shù)值計算——矩陣運算乘法、除法、乘方

    MATLAB數(shù)值計算——矩陣運算乘法、除法、乘方

    矩陣是線性代數(shù)的基本單元 矩陣含有M行N列數(shù)值 矩陣中的元素可以是實數(shù)或復(fù)數(shù) 矩陣相關(guān)的基本運算:加、減、內(nèi)積、逆矩陣、轉(zhuǎn)置、線性方程式、特征值、特征向量、矩陣分解 運算符: 注:矩陣的乘法運算中沒有乘法交換律 運算符: * 注: x=B/A是方程x A=B的解。即x=A的逆

    2024年01月16日
    瀏覽(26)
  • 5.7 匯編語言:匯編高效乘法運算

    乘法指令是一種在CPU中實現(xiàn)的基本算術(shù)操作,用于計算兩個數(shù)的乘積。在匯編語言中,乘法指令通常是通過 mul(無符號乘法) 和 imul(有符號乘法) 這兩個指令實現(xiàn)的。由于乘法指令在執(zhí)行時所消耗的時鐘周期較多,所以編譯器在優(yōu)化代碼時通常會嘗試將乘法操作轉(zhuǎn)換為更

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包