【约数之和】

news2024/11/24 16:03:30

题目

TLE代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define x first
#define y second

const int N = 5e7+10;
const int MOD = 9901; 
LL a, b;
unordered_map<int, int> cnt;
LL res = 1;
LL fast(int base, int expo)
{
    LL result = 1;
    while(expo)
    {
        if(expo & 1)
        {
            result *= base;
        }
        base *= base;
        expo /= 2;
    }
    
    return result;
}
LL cal(int p, int k)
{
    if(k == 0) return 0;
    if(k == 1) return 1;
    if(k == 2) return p + 1;
    
    if(k%2 == 0) return (fast(p, k/2) + 1) * cal(p, k/2);
    else return cal(p, k-1) + fast(p, k-1);
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> a >> b;
    
    int num = a;
    while(num%2 == 0) cnt[2]++, num /= 2;
    for(int i = 3; i <= a; i+=2)
    {
        bool flag = true;
        for(int j = 2; j*j <= i; j++)
        {
            if(i%j==0)
            {
                flag = false;
                break;
            }
        }
        if(flag)
        {
            if(num%i == 0)
            {
                while(num%i == 0) cnt[i]++, num /= i;
            }
        }

    }
    
    for(auto const & m : cnt)
    {
        res *= cal(m.x, m.y*b + 1);
    }
    
    cout << res % MOD << '\n';
}

错误分析

1.        质因数分解写太蠢,从最小的因数开始分解就能保证分解出的因数全部是质数,不需要先筛质数再判定因数。

2.        质因数分解也忘了考虑a > 1的情况,这对应唯一质因数就是自己

正确代码

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

const int MOD = 9901;
LL a, b, res = 1;

LL fast_power(LL base, LL expo)
{
    LL result = 1;
    while(expo)
    {
        if(expo & 1) result = result * base % MOD;
        base = base * base % MOD;
        expo >>= 1;
    }
    return result;
}
LL sum(LL p, LL k)
{
    if(k == 0) return 0;
    else if(k == 1) return 1;
    else if(k == 2) return p + 1;
    
    if(k % 2 == 0) return (fast_power(p, k/2) + 1) * sum(p, k/2) % MOD;
    else return (sum(p, k-1) + fast_power(p, k-1)) % MOD;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> a >> b;
    for(int i = 2; i*i <= a; i++)
    {
        if(a % i == 0)
        {
            int cnt = 0;
            while(a % i == 0)
            {
                cnt++;
                a /= i;
            }
            
            res = res * sum(i, cnt*b+1) % MOD;
        }
    }
    
    if(a > 1) res = res * sum(a, 1*b+1) % MOD;
    if(!a) res = 0;
    
    cout << res % MOD <<  "\n";
}

感悟

1.        遇到大数据全部开LL,除了循环指针

2.        存在mod时,更新不能用*= 要老实写

3.        &1既是判定快速幂是否操作,也是判定奇数

4.        虽然a > 1代表自己是质因数,但是a是个变化量,a可能不是最开始的a,res也不是最开始的1,有其他因数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039487.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TreeSet的排序方式

一.TreeSet的特点&#xff1a; 二.TreeSet对象排序练习题&#xff1a; 需求&#xff1a;利用TreeSet存储整数并进行排序 package com.itheima.a06mySet; ​ import java.util.TreeSet; ​ public class A05_TreeSetDemo1 {public static void main(String[] args) {//1.创建T…

链表算法题一

​ 旋转链表 旋转链表 首先考虑特殊情况 若给定链表为空表或者单个节点,则直接返回head,不需要旋转操作.题目给定条件范围: 0 < k < 2 ∗ 1 0 9 0 < k < 2 * 10^9 0<k<2∗109,但是受给定链表长度的限制,比如示例2中,k4与k1的效果等价. 那么可以得出kk%l…

QLabel设置图像的方法+绘制文本换行显示

1、QLabel设置图像有两种方法 (1) void setPicture(const QPicture &); (2) void setPixmap(const QPixmap &); QPicture和QPixmap都是继承于QPaintDevice&#xff0c;它们都可以通过加载图片的方式获取&#xff1a;bool load(QIODevice *dev, const char *format …

8.8网络编程

笔记 网络基础 一.网络通信的引入 IPC通信方式&#xff0c;只能完成同一台主机之间多个进程间的通信&#xff0c;在实现跨主机的多个进程间通信时&#xff0c;就显得力不从心了。所以我们引入了网络通信&#xff0c;基于套接字socket的通信方式&#xff0c;能够完成同一主机…

AI Agent工程师认证-学习笔记(2)——【多Agent】AgentScope

基础学习链接&#xff1a;【多Agent】AgentScope学习指南 速通攻略&#xff1a;零基础做个多智能体游戏 Agentscope入门文档&#xff1a;AgentScope 初探 应用开发进阶&#xff1a;AgentScope应用开发入门 AgentScope官方文档&#xff1a;AgentScope官方文档 AgentScope开…

Ghidra:开源软件逆向工程框架

Ghidra 是一个软件逆向工程 (SRE) 框架 Ghidra 是一种尖端的开源软件逆向工程 (SRE) 框架&#xff0c;是美国国家安全局 (NSA) 研究局的产品。 Ghidra 该框架具有高端软件分析工具&#xff0c;使用户能够分析跨各种平台&#xff08;包括 Windows、macOS 和 Linux&#xff09…

【区块链+金融服务】港融区域股权服务平台 | FISCO BCOS应用案例

中国证监会在 2020 年启动了区块链建设试点工作&#xff0c;提出建设基于区块链的场外市场登记系统和交易报告库&#xff0c;利 用区块链去中心化、不易篡改、安全稳定等技术特点&#xff0c;构建区域性股权市场数字化信任机制&#xff0c;为区域性股权市场 提供基础支撑设施。…

【网编】——UDP编程

宏观操作 服务器&#xff1a;socket创套接字—bind绑定连接—recvfrom接收数据/sendto发送数据 客户端&#xff1a;socket创套接字—sendto发送数/recvfrom接收数据—close关闭套接字 函数 recv ssize_t recvfrom ( int sockfd , void * buf , size_t len , int flags , str…

【秋招笔试】8.11大疆秋招(第三套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

实时推荐算法的架构

1. 实时推荐算法的架构设计 偷得浮生半日闲&#xff0c;跟大家一起聊一聊大家最喜欢的实时推荐算法架构&#xff0c;具体如图1.1&#xff0c;架构的详解则见下一章节《2. 实时推荐算法架构设计详解》。 图 1.1 实时推荐算法的架构设计 2. 实时推荐算法架构设计详解 2.1 数据源…

MySQL 数据类型详解及SQL语言分类-DDL篇

在数据库开发中&#xff0c;选择合适的数据类型和理解SQL语言的分类是非常重要的。今天详细介绍MySQL中的数据类型&#xff0c;包括数值类型、字符串类型和日期类型&#xff0c;并解释SQL语言的四大分类&#xff1a;DDL、DML、DQL和DCL。 1.MySQL 数据类型 SQL语言是不区分大…

C++ 126类和对象_ 运算符重载_仿函数调用

126类和对象_ 运算符重载_仿函数调用 学习内容 仿函数调用 结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错 #include<string>//126类和对象_ 运算符重载_仿函数调用 //学习内容 //仿函数调用class MyPrint { …

【在线+sdwebui】在线免费运行stable-diffusion-webui (无需配置环境)

在线运行平台: https://platform.virtaicloud.com/gemini_web/auth/register 一、进入项目页面启动环境 项目&#xff1a;https://open.virtaicloud.com/web/project/detail/460841914028511232 1.1 点击运行 1.2 克隆环境到注册后的平台 1.3 自动适配项目最低配置的显卡 &…

Java面试题--JVM大厂篇之高并发Java应用的秘密武器:深入剖析GC优化实战案例

引言: 晚上好,Java开发者们!在高并发的现代应用中,垃圾回收器(GC)是Java性能优化的重要环节。尤其在CMS(Concurrent Mark-Sweep)GC曾经担任主角的日子里,适当的调优和优化措施至关重要。本篇文章将通过三个实际案例,探讨如何在不同场景中优化CMS GC,为你揭示Java性能…

前端如何使用Nginx代理dist网页,代理websocket,代理后端

本文将指导您如何配置Nginx以代理前后端分离的项目&#xff0c;并特别说明了对WebSocket的代理设置。通过本教程&#xff0c;您将能够实现一次性配置&#xff0c;进而使项目能够在任意局域网服务器上部署&#xff0c;并可通过IP地址或域名访问服务。 笔者建议 先速览本文了解大…

再见Figma!!新的设计,代码协作神器!【送源码】

软件介绍 Penpot 是一款专门用来帮助设计师和开发者更好地合作的软件。它可以让设计师轻松地做出漂亮的设计稿&#xff0c;还能让这些设计稿变成真正的网站或者应用的一部分。这样&#xff0c;设计师和开发者之间就不会因为沟通不畅而产生麻烦了。 Penpot 专为设计师与开发者之…

Android 下载安装配置

文章目录 Android Studio 下载安装配置1. 下载JDK2. JDK环境配置&#xff1a;3. 测试JDK是否安装成功&#xff1a;4. 下载Android Studio:5. 配置Android Studio:6. android studio提速方法1&#xff08;不行&#xff09;方法2&#xff1a;(很行&#xff09; Android Studio 下…

OpenDDS集中发现服务DCPSInfoRepo联邦机制

OpenDDS在提供DCPSInfoRepo集中发现服务的基础上&#xff0c;又提供了集中发现服务DCPSInfoRepo的联邦功能&#xff0c;实际上就是集群功能。 联邦Federation间的通信主题&#xff0c;用于Federation联邦节点间DDS对象的资源库一致性迁移&#xff0c;包括 1&#xff09;OwnerUp…

力扣热题100_图论_994_腐烂的橘子

文章目录 题目链接解题思路解题代码 题目链接 994. 腐烂的橘子 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周…

数据可视化实用干货分享

在当今的数字化时代&#xff0c;数据已成为企业决策的重要基石。然而&#xff0c;面对海量的数据&#xff0c;如何高效地理解、分析和应用这些数据&#xff0c;成为企业面临的一大挑战。数据可视化作为一种将数据转化为图形或图表的技术&#xff0c;为企业提供了强有力的支持。…