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

Codeforces Round 1043 (Div. 3) D. From 1 to Infinity

D.从 1 到无穷大

每次测试的时间限制:1.5 秒

每次测试的内存限制:256 兆字节

输入:标准输入

输出:标准输出
瓦迪姆想了解由从 111 到无穷大的正整数连续写成的数字组成的无穷序列。也就是说,这个序列看起来像 123456789101112131415…123456789101112131415 \ldots123456789101112131415

为了避免无穷大,瓦迪姆在 kkk /th数字处截断了这个序列,并舍弃了它之后的所有数字。这样,序列中就只剩下了 kkk 个数字。请帮助他找出剩余序列中的数字之和。
输入

每个测试由多个测试用例组成。第一行包含一个整数 ttt (1≤t≤2⋅104)(1 \le t \le 2 \cdot 10^4)(1t2104) 。- 测试用例的数量。下面几行描述测试用例。

在每个测试用例的单行中,都有一个整数 kkk - 剩余序列 (1≤k≤1015)(1 \le k \le 10^{15})(1k1015) 中的位数。
输出

对于每个给定的 kkk ,输出长度为 kkk 的序列中的数字之和。

在第一个样本中,剩余序列为 123451234512345

在第二个样本中,剩余序列为 123456789112345678911234567891

第三个样本的剩余序列为 123456789101112345678910111234567891011

  • 代码欣赏

#include<bits/stdc++.h>
#define int long long
using namespace std;
int num[20]={0,9,189,2889,38889,488889,5888889,68888889,788888889,8888888889,98888888889,1088888888889,11888888888889,128888888888889};
int shu10[20]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000,10000000000,100000000000,1000000000000,10000000000000,100000000000000};
int dp[25][2],f[25][2],n,shu[20],zhi[20],l;
int qiu(int u,int limit)
{if(u==0)return 0;int sum=0;if(dp[u][0]!=-1&&!limit)return dp[u][0];if(f[u][0]!=-1&&limit)return f[u][0];int ss=((u==1&&l<2)?1:0);for(int i=ss;i<=(limit?zhi[u]:9);i++){sum+=(qiu(u-1,limit&&i==zhi[u])+i*((limit&&i==zhi[u])?f[u-1][1]:dp[u-1][1]));((limit)?f[u][1]:dp[u][1])+=((limit&&i==zhi[u])?f[u-1][1]:dp[u-1][1]);}((limit)?f[u][0]:dp[u][0])=sum;return sum;
}
signed main()
{ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);int _,flag;memset(dp,-1,sizeof(dp));dp[0][1]=f[0][1]=1;for(int i=1;i<=20;i++)dp[i][1]=0;cin>>_;while(_--){cin>>n;int ans=0;for(int i=1;i<=18;i++)f[i][1]=0,f[i][0]=-1;for(int i=13;i>=0;i--){if(n>num[i]){flag=i;break;}}int yu=n-num[flag];int h=floor(yu/(flag+1))+shu10[flag]-1;// int yyy=(n-h*(flag+1));// cout<<"666666  "<<yu<<'\n';if(yu%(flag+1)!=0){int g=h+1;int js=0;// cout<<"------"<<g<<'\n';int yu1=yu%(flag+1);while(g>0){shu[++js]=g%10;g/=10;}for(int i=js;i>=js-yu1+1;i--)ans+=shu[i];}l=0;// cout<<h<<" "<<ans<<'\n';while(h>0){zhi[++l]=h%10;h/=10;}ans+=qiu(l,1);cout<<ans<<'\n';// cout<<f[1][0]<<" "<<f[1][1]<<" "<<'\n';// cout<<dp[1][0]<<" "<<dp[1][1];}return 0;
}
http://www.dtcms.com/a/355921.html

相关文章:

  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day9
  • 【数据分享】珠江三角洲水系地理空间全套数据集
  • x64dbg的基本调试操作 (未完,待补充)
  • 通信协议再升级,PROFINET和EtherNet IP网关迎接改造升级大挑战
  • 智慧清洁革新者:有鹿机器人自述
  • @Jenkins 介绍、部署与使用标准作业程序
  • 深入 OpenHarmony 内核:设备待机管理模块的休眠调度与资源节能技术
  • AT_abc407_f [ABC407F] Sums of Sliding Window Maximum
  • 告别低效!三坐标测量机提高油缸导向套检测效率
  • 拷贝构造和赋值重载有什么区别
  • 转发、重定向
  • 什么是强化学习? ——— 帮助新手了解
  • 基于51单片机的远程wifi浇花系统设计
  • Snagit 2025.3.0 截图贴图录像编辑
  • Android Keystore签名文件详解与安全防护
  • shell编程学习
  • 基于深度学习的档案级图像修复:Coderformer AI技术解析与应用实践
  • 一、晶振与布局布线处理
  • Python Imaging Library (PIL) 全面指南:Python Imaging Library (PIL)基础图像处理入门
  • 呼叫中心录音加密与数据隔离技术方案全解析
  • Wagtail 扩展 HomePage 模型(一个简单的 例子)
  • 人工智能-python-深度学习-过拟合与欠拟合:概念、判断与解决方法
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(三)
  • 详解多智能体架构:以 Open Deep Research 项目为例
  • Android中设置RecyclerView滑动到指定条目位置
  • container向harbor推送镜像报错 x509: certificate signed by unknown authority
  • redis添加超时设置
  • SONiC 之 Testbed(2)Ansible
  • Ansible 角色与 Galaxy 生态:角色复用、集合安装与系统角色配置详解
  • 半导体全自动化无人工厂应用