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

C++ 數論相關題目(約數)

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

1、試除法求約數

給定 n
個正整數 ai
,對于每個整數 ai
,請你按照從小到大的順序輸出它的所有約數。

輸入格式
第一行包含整數 n
。

接下來 n
行,每行包含一個整數 ai

輸出格式
輸出共 n
行,其中第 i
行輸出第 i
個整數 ai
的所有約數。

數據范圍
1≤n≤100
,
1≤ai≤2×109
輸入樣例:
2
6
8
輸出樣例:
1 2 3 6
主要還是可以成對的求約數進行優(yōu)化,不然會超時。
時間復雜度根號n

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int n;

vector<int> solve(int a)
{
    vector<int> res;
    for(int i = 1; i <= a / i; i ++ )
    {
        if(a % i == 0)
        {
            res.push_back(i);
            if(a / i != i)
                res.push_back(a / i);
        }
    }
    sort(res.begin(), res.end());

    return res;
}


int main ()
{
    cin>>n;
    while(n -- )
    {
        int a;
        cin>>a;
        auto t = solve(a);
        for(auto x : t)
            cout<<x<<' ';
        cout<<endl;
    }
    
    return 0;
}

2、約數個數

給定 n
個正整數 ai
,請你輸出這些數的乘積的約數個數,答案對 109+7
取模。

輸入格式
第一行包含整數 n
。

接下來 n
行,每行包含一個整數 ai
。

輸出格式
輸出一個整數,表示所給正整數的乘積的約數個數,答案需對 109+7
取模。

數據范圍
1≤n≤100
,
1≤ai≤2×109
輸入樣例:
3
2
6
8
輸出樣例:
12
主要是要理解算術基本定理:
C++ 數論相關題目(約數),數論,算法筆記,力扣,c++,算法
約數個數:(a1+1)(a2+2)…(an+n)
代碼思想:先對每個數進行質因數分解,然后利用約數個數公式進行計算。

#include <iostream>
#include <algorithm>
#include <unordered_map>

using namespace std;

const int mod = 1e9 + 7;

int n;

int main ()
{
    cin >> n;
    unordered_map<int, int> primes;
    while(n -- )
    {
      int x;
      cin >> x;
      
      for(int i = 2; i <= x / i; i ++ )
      {
          while(x % i == 0)
          {
              x /= i;
              primes[i] ++;
          }
      }
      if(x > 1) primes[x] ++;
      
    }
    long long res = 1;
    for(auto prime : primes)
        res = res * (prime.second + 1) % mod;
        
    cout << res << endl;
    
    return 0;
}

3、約數之和

給定 n
個正整數 ai
,請你輸出這些數的乘積的約數個數,答案對 109+7
取模。

輸入格式
第一行包含整數 n
。

接下來 n
行,每行包含一個整數 ai
。

輸出格式
輸出一個整數,表示所給正整數的乘積的約數個數,答案需對 109+7
取模。

數據范圍
1≤n≤100
,
1≤ai≤2×109
輸入樣例:
3
2
6
8
輸出樣例:
12
數論的題目還是主要是記公式:
C++ 數論相關題目(約數),數論,算法筆記,力扣,c++,算法

因此,這里我們先質因數分解出底數和指數,然后對每個對底數和指數求一個括號內的數,然后累乘到答案上即可。

#include <iostream>
#include <unordered_map>

using namespace std;

const int mod = 1e9 + 7;
int n;

int main ()
{
    cin >> n;
    
    unordered_map<int, int> primes;
    
    while(n -- )
    {
        int x;
        cin >> x;
        
        for(int i = 2; i <= x / i; i ++ )
        {
            while(x % i == 0)
            {
                x /= i;
                primes[i] ++;
            }
        }
        if(x > 1) primes[x] ++;
    }
    
    long long res = 1;
    
    for(auto prime : primes)
    {
        long long t = 1;
        long long p = prime.first, a = prime.second;
        while(a -- )
        {
            t = (t * p + 1) % mod;
        }
        res = res * t % mod;
    }
    
    cout << res << endl;
    
    return 0;
}

4、最大公約數

給定 n
對正整數 ai,bi
,請你求出每對數的最大公約數。

輸入格式
第一行包含整數 n

接下來 n
行,每行包含一個整數對 ai,bi

輸出格式
輸出共 n
行,每行輸出一個整數對的最大公約數。

數據范圍
1≤n≤105
,
1≤ai,bi≤2×109
輸入樣例:
2
3 6
4 6
輸出樣例:
3

主要是記模板,a和b的最大公約數等于b和a模b的最大公約數。文章來源地址http://www.zghlxwxcb.cn/news/detail-806141.html

#include <iostream>

using namespace std;

int n;

int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

int main ()
{
    cin >> n;
    while(n -- )
    {
        int a, b;
        cin >> a >> b;
        cout << gcd(a, b) <<endl;
    }
    
    return 0;
}

到了這里,關于C++ 數論相關題目(約數)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 入門力扣自學筆記256 C++ (題目編號:1019)

    入門力扣自學筆記256 C++ (題目編號:1019)

    1019. 鏈表中的下一個更大節(jié)點 給定一個長度為?n?的鏈表?head 對于列表中的每個節(jié)點,查找下一個 更大節(jié)點 的值。也就是說,對于每個節(jié)點,找到它旁邊的第一個節(jié)點的值,這個節(jié)點的值 嚴格大于 它的值。 返回一個整數數組 answer ,其中 answer[i] 是第 i 個節(jié)點( 從1開始 )的

    2023年04月17日
    瀏覽(18)
  • 入門力扣自學筆記272 C++ (題目編號:2544)

    2544. 交替數字和 給你一個正整數 n 。n 中的每一位數字都會按下述規(guī)則分配一個符號: 最高有效位 上的數字分配到 正 號。 剩余每位上數字的符號都與其相鄰數字相反。 返回所有數字及其對應符號的和。 輸入:n = 521 輸出:4 解釋:(+5) + (-2) + (+1) = 4 輸入:n = 111 輸出:1 解

    2024年02月13日
    瀏覽(18)
  • 入門力扣自學筆記279 C++ (題目編號:1123)

    入門力扣自學筆記279 C++ (題目編號:1123)

    1123.?最深葉節(jié)點的最近公共祖先 給你一個有根節(jié)點? root ?的二叉樹,返回它? 最深的葉節(jié)點的最近公共祖先 ?。 回想一下: 葉節(jié)點 ?是二叉樹中沒有子節(jié)點的節(jié)點 樹的根節(jié)點的? 深度? 為? 0 ,如果某一節(jié)點的深度為? d ,那它的子節(jié)點的深度就是? d+1 如果我們假定? A

    2024年02月09日
    瀏覽(17)
  • 入門力扣自學筆記257 C++ (題目編號:1041)

    1041. 困于環(huán)中的機器人 在無限的平面上,機器人最初位于?(0, 0)?處,面朝北方。注意: 北方向 是y軸的正方向。 南方向 是y軸的負方向。 東方向 是x軸的正方向。 西方向 是x軸的負方向。 機器人可以接受下列三條指令之一: \\\"G\\\":直走 1 個單位 \\\"L\\\":左轉 90 度 \\\"R\\\":右轉 90 度

    2023年04月11日
    瀏覽(15)
  • C++算法之旅、08 基礎篇 | 質數、約數

    在1的整數中,如果只包含1和本身這兩個約數,就被稱為質數(素數) 866. 試除法判定質數 - AcWing題庫 (O(n)) 約數 d 與 n / d 成對出現 ,可以枚舉較小的那一個 (O(sqrt{n})) (d = n/d \\\\ d^2 = n \\\\ d = sqrt{n}) 難點 循環(huán)判斷條件不要用 sqrt,每次循環(huán)都會執(zhí)行一遍sqrt函數,比較慢 循環(huán)

    2024年02月08日
    瀏覽(21)
  • 【leetcode 力扣刷題】回文串相關題目(KMP、動態(tài)規(guī)劃)

    【leetcode 力扣刷題】回文串相關題目(KMP、動態(tài)規(guī)劃)

    題目鏈接:5. 最長回文子串 題目內容: 題目就是要我們找s中的回文子串,還要是最長的。其實想想,暴力求解也行……就是遍歷所有的子串,同時判斷是不是回文串,是的話再和記錄的最大長度maxlen比較,如果更長就更新。時間復雜度直接變成O(n^3)。 優(yōu)化的點在于,假設子

    2024年02月09日
    瀏覽(27)
  • C++力扣題目77--組合

    C++力扣題目77--組合

    給定兩個整數? n ?和? k ,返回范圍? [1, n] ?中所有可能的? k ?個數的組合。 你可以按? 任何順序 ?返回答案。 示例 1: 示例 2: 提示: 1 = n = 20 1 = k = n 本題是回溯法的經典題目。 直接的解法當然是使用for循環(huán),例如示例中k為2,很容易想到 用兩個for循環(huán),這樣就可以輸

    2024年01月17日
    瀏覽(18)
  • C++力扣題目37--解數獨

    C++力扣題目37--解數獨

    力扣題目鏈接(opens new window) 編寫一個程序,通過填充空格來解決數獨問題。 一個數獨的解法需遵循如下規(guī)則: 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次。 空白格用 \\\'.\\\' 表示。 一個數獨。 答案

    2024年01月21日
    瀏覽(17)
  • C++力扣題目39--組合總和

    C++力扣題目39--組合總和

    給你一個? 無重復元素 ?的整數數組? candidates ?和一個目標整數? target ?,找出? candidates ?中可以使數字和為目標數? target ?的 所有 ? 不同組合 ?,并以列表形式返回。你可以按? 任意順序 ?返回這些組合。 candidates ?中的? 同一個 ?數字可以? 無限制重復被選取 ?。如果

    2024年01月17日
    瀏覽(21)
  • c++泛型算法相關筆記

    c++泛型算法相關筆記

    泛型算法:可以支持多種類型的算法 此處主要來討論怎么使用標準庫中定義的泛型算法 algorithm , numeric , ranges . 在引入泛型算法之前,還有一種是方法的形式,比如說 std::sort 和 std::list::sort ,前者是算法,后者是list類中定義的函數(方法) 為什么引入泛型算法,而不用方法

    2024年01月19日
    瀏覽(14)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包