首页 > 其他分享 >Atcoder357 D(逆元和快速幂)

Atcoder357 D(逆元和快速幂)

时间:2024-06-10 15:32:38浏览次数:13  
标签:10 num LL len 逆元 Atcoder357 快速 mod

Atcoder357 D

D

题意就是求给定一个数n的连续n个n相拼接,求最后的数\(mod998244353\)的值。
我们假设n的长度为len,那么n个n相拼接可以看成n*(\(10^{len^0}\)+\(10^{len^1}\)+....+\(10^{len^{n-1}}\))。那个就可以利用高中等比数列的知识求出公式(\(n*(10^{len^n}-1\))/(\(10^{len}\)-1))。由于本身数字范围过大,不能直接求解,所以可以运用取mod运算乘法性质来求解。
但是取mod运算法则对除法没法很好的处理,所以这里需要用到逆元来将除法运算转换成乘法运算。
对于数字非常大,再求n次幂时也需要用到快速幂来降低时间复杂度。

乘法逆元

概念(视频)
oiwiki的其他拓展

快速幂

oiwiki.

#include <bits/stdc++.h>
#define debug1(X) std::cout << #X << ": " << X << '\n'
#define debug2(X) std::cout << #X << ": " << X << ' '
using LL = long long;
const LL mod=998244353;
LL poww(LL a, LL b) {
     LL ans = 1, base = a;
     while (b != 0) {
         if (b & 1 != 0)
             ans =ans*base%mod;             
             base = base*base%mod;
             b >>= 1;
    }
     return ans;
 }
void solve()
{  
    
    LL n;
    std::cin>>n;
    LL num=n;
    LL len=1;
    while(num){
        num/=10;
        len=len*10;
    }
    LL ans=(n%mod)*(poww(len%mod,n)-1)%mod*(poww((len-1)%mod,mod-2))%mod;
   std::cout<<ans<<"\n";

}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int t = 1;
    // std::cin >> t;
    while (t--)
    {
        solve();
    }
    return 0;
}

标签:10,num,LL,len,逆元,Atcoder357,快速,mod
From: https://www.cnblogs.com/sdlypsck/p/18240707

相关文章

  • python快速生成二维码及读取二维码内容 pyqrcode MyQR pyzbar
    目录效果图生成二维码方式1:pyqrcode方式2:MyQR  读取二维码效果图生成二维码方式1:pyqrcode安装pipinstallpyqrcode代码实现importpyqrcode#text为保存在二维码的内容。text为完整链接时,扫描后可直接跳转到该链接text='https://www.baidu.com/'qr=pyqrc......
  • 星参谋:上架新品后怎样才能快速提升排名呢?可以看看这些小窍门
    新品上架,流量不足?买家根本搜不到你的宝贝!原因很简单:新品没有权重,也没有排名!想要突破这一困局,唯一的方法就是卡首屏!但你知道吗?绝大多数的新手商家根本不明白什么是卡首屏!今天我就来一次讲清楚!01什么是卡首屏?有什么优势?卡首屏,简单来说,就是在新品前期,通过特定的操作,让买家......
  • python-pip配置镜像源加速下载Python包安装:快速配置pip源-国内加速源
    目录一、简介二、国内常用加速源 三、配置pip加速源1.临时配置2.永久配置a.配置命令b.查看是否配置成功c.还原配置一、简介pip的原本安装源是PythonPackageIndex(PyPI)的官方源,其URL为https://pypi.org/simple/。PyPI是Python社区用来发布和共享软件包的官方仓......
  • 如何快速入门Element-UI:打造高效美观的前端界面
    Element-UI是一款基于Vue.js的开源组件库,提供了丰富的UI组件,可以帮助开发者快速构建美观、响应式的前端界面。本文将详细介绍如何快速入门Element-UI,包括环境搭建、组件使用、样式定制及常见问题解决方法,帮助你高效地使用Element-UI进行前端开发。一、环境搭建1.准......
  • IDEA 12大全局配置,快速提供开发效率
    IDEA相关配置整理于2024.06.0923:23@程序员猴哥1编码设置:File-->newprojectssettings-->settingsfornewprojects-->editor--->fileencodings-->globalencodeing:utf-8;projectencoding:utf-8;defaultencodingforpropertiesfiles:utf-8![img](file......
  • 快速了解JVM机制
    1.JVM简介JVM是JavaVirtualMachine的简称,意为Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运⾏在⼀个完全隔离的环境中的完整计算机系统。常⻅的虚拟机:JVM、VMwave、VirtualBox。JVM和其他两个虚拟机的区别:VMwave与VirtualBox是通过软件模拟物......
  • Autotools项目骨架:快速设置新项目
    介绍Autotools是用于构建和配置软件项目的强大工具链。autotools-skeleton项目提供了一个简单的模板,用于快速启动和设置新项目。这个模板包括基本的构建配置文件,使开发者能够快速创建适合于广泛平台和编译器的可移植软件包。通过自动生成配置脚本,Autotools简化了构建和安装过......
  • 11.5 快速排序
    目录11.5 快速排序11.5.1 算法流程11.5.2 算法特性11.5.3 快速排序为什么快11.5.4 基准数优化11.5.5 尾递归优化11.5 快速排序快速排序(quicksort)是一种基于分治策略的排序算法,运行高效,应用广泛。快速排序的核心操作是“哨兵划分”,其目标是:选......
  • nginx快速分析日志并找出攻击IP
    第一步:分析NGINX日志分析日志主要目的是寻找那些异常活跃的IP地址,通过以下命令可以快速找出。 cataccess.log|awk'{print$1}'|sort|uniq-c|sort-rn|head-10命令说明:cataccess.log:将access.log文件的内容输出到标准输出。awk'{print$1}':awk是一个强大的文本......
  • 外链建设平台:选择合适平台,快速建设外链
    外链建设平台:选择合适平台,快速建设外链在当今数字化时代,互联网已成为企业宣传和推广的重要渠道。在搜索引擎优化(SEO)中,外链被视为提高网站排名和流量的关键因素之一。然而,建设大量高质量的外链并非易事,需要耗费时间和精力。为了解决这个问题,外链建设平台应运而生。本文将探讨如何......