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

d88888888

分析:v9=999999999

vn=输出n个n

先算出n的位数p

所以答案是n+n*10的p次方+n*10的2p次方+.....+n*10的(n-1)p次方

化简n*(10的0次方+10的p次方+10的2p次方+.....+10的(n-1)p次方)

后面为等比数列求和 公比为10的p次方 首相是1

节省点写法把10的p次方为p

答案是n*(p的n次方-1)/(p-1)

快速幂的板子

ll qpow2(ll a,ll b,ll p){//a的b次方%mod
    ll base=a;
    ll res=1;
    while(b){
            if(b&1)res=(res*base)%p;
            base=(base*base)%p;
            b>>=1;
    }
    return res%p;
}

有除法 就用逆元

逆元的板子

ll inv(ll a,ll b)//a/b%mod
{
    return (a*qpow2(b,mod-2,mod))%mod;
}

一整合

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;

ll qpow2(ll a,ll b,ll p){
    ll base=a;
    ll res=1;
    while(b){
            if(b&1)res=(res*base)%p;
            base=(base*base)%p;
            b>>=1;
    }
    return res%p;
}


//逆元函数 公式为 (a/b)%mod=(a*b^(mod-2))%mod
//逆元
ll inv(ll a,ll b)
{
    return (a*qpow2(b,mod-2,mod))%mod;
}

int main(){
    ll n;cin>>n;
    ll p=1,x=n;
    while(x>0){
        x/=10;
        p*=10;
        p%=mod;
    }
    ll ans=n%mod;
    ans=(ans*(qpow2(p,n,mod)-1))%mod;
    ans=inv(ans,p-1)%mod;
    cout<<ans<<endl;
    return 0;
}

http://www.lryc.cn/news/391474.html

相关文章:

  • 【MySQL备份】mysqldump基础篇
  • C# Halcon目标检测算法
  • 7.4总结
  • 知识图谱查询语言的表示
  • 重生之我要学后端100--计算机网络部分概念(持续更新)
  • 时空预测+特征分解!高性能!EMD-Transformer和Transformer多变量交通流量时空预测对比
  • Vue 循环内部获取图片高度
  • vue动态组件与插件到底是什么?
  • SwiftUI九创建watchOS应用
  • 【Linux进阶】文件和目录的默认权限与隐藏权限
  • SQL 查询中 (+) 符号的含义
  • 基于Vue的MOBA类游戏攻略分享平台
  • 如何在PhpStorm中运行SQL文件?
  • Qt实现检测软件是否多开
  • spring security + vue,登录功能
  • 64.函数参数和指针变量
  • 原创作品 —(金融行业)年金系统交互和视觉设计
  • 3D slicer
  • 面试题--SpringCloud
  • Qt windeployqt 打包的Qt动态库介绍
  • WordPress付费进群V2主题,多种引流方法,引私域二次变现
  • 【Linux】性能分析器 perf 详解(三):kmem、mem
  • 微信小程序怎样跳转页面?
  • 针对SVN、GIT版本管理工具进行源代码加密保护
  • js条件引用
  • 帝国CMS(EmpireCMS)漏洞复现
  • DP:解决路径问题
  • Halcon OCR字符识别(极坐标转换,字符识别)
  • 【管理咨询宝藏139】某大型快消集团公司多渠道销售管理体系方案
  • 大模型提问中包括时间的实战方案