当前位置: 首页 > news >正文

经典算法 整数因子分解问题

Problem Description

大于 1 的正整数 n 可以分解为:

n = x₁ * x₂ * ... * xₘ

其中每个 xᵢ 是正整数,x₁ * x₂ * ... * xₘ = n

例如,当 n = 12 时,共有 8 种不同的分解式:

12 = 12  
12 = 6 * 2  
12 = 4 * 3  
12 = 3 * 4  
12 = 3 * 2 * 2  
12 = 2 * 6  
12 = 2 * 3 * 2  
12 = 2 * 2 * 3

注意:只要乘积顺序不同,就视为不同的分解式。


Input

输入数据只有一行,包含一个正整数 n,满足:

1 ≤ n ≤ 2,000,000,000

Output

输出 n 的不同分解式数量。


Sample Input

12

Sample Output

8

c++代码

#include<bits/stdc++.h>
#include<math.h>

using namespace std;

typedef long long ll;

unordered_map<ll, ll> mp;

ll dfs(ll x) {
    if (x == 1) return 1;
    if (mp.find(x) != mp.end()) return mp[x];
    ll ans = 1;
    for (ll i = 2; i <= sqrt(x); i++) {
        if (x % i == 0) {
            ans += dfs(i);
            if (x / i != i) ans += dfs(x / i);
        }
    }
    mp[x] = ans;
    return ans;
}

int main() {
    ll n;
    cin >> n;
    cout << dfs(n);
    return 0;
}//by wqs

相关文章:

  • 二分算法-day2
  • 【C#】关键字 volatile
  • 【驱动智能交通的关键引擎 解析C-V2X发展挑战】
  • (面试常问)C++中的static关键字——静态局部、静态全局、静态函数、静态与单例线程安全性(C++11之后)等
  • ​Android Gradle 插件(AGP)版本与 ​Gradle 版本需要严格对应
  • 体育赛事即时比分 分析页面的开发技术架构与实现细节
  • Python----计算机视觉处理(Opencv:图像噪点消除:滤波算法,噪点消除)
  • 「查缺补漏」巩固你的 RabbitMQ 知识体系
  • CNG汽车加气站操作工备考真题及答案解析【判断题】
  • Java-智能家居系统小案例
  • Linux: 网络,arp的数量为什么会对交换机/路由器有性能的影响
  • async/defer/preload性能优化
  • 基于SpringBoot和Vue的SQL TO API平台的设计与实现
  • SQL语言分类及命令详解(一)
  • Java面试黄金宝典20
  • Java 实现将Word 转换成markdown
  • 便携版:随时随地,高效处理 PDF 文件
  • 数据驱动的教育革命:让学习更智能、更个性化
  • BNB Chain 何以打造 AI 驱动链上应用新世界?
  • 【数据仓库】湖仓一体的核心建模理论
  • 魔都眼|买买买,老铺黄金新店开业被挤爆:有人排队5小时
  • 韩国代总统、国务总理韩德洙宣布辞职,将择期宣布参选总统
  • 国台办:“台独”是绝路,外人靠不住
  • 三大白电巨头去年净利近900亿元:美的持续领跑,格力营收下滑
  • 马上评丨又见酒店坐地起价,“老毛病”不能惯着
  • 国家核准10台核电新机组,四大核电央企披露新项目进展