count

洛谷p1836

题目描述

一本书的页码是从 1-n 编号的连续整数: 1, 2, 3, ... , n。请你求出全部页码中

所有单个数字的和,例如第 123 页,它的和就是 1+2+3=6。

输入输出

输入

一行为 n(1 <= n <= 10^9)。

输出

一行,代表所有单个数字的和。

样例

样例输入

3456789

样例输出

96342015

说明

时间限制 1s/testcase

空间限制 32MB

思路

鉴于 n 可以达到 10^9,直接模拟是不可取的

逐位递推,发现规律.

  1. 对于10^7以内的数据,直接模拟暴力可以过
for(int i=1; i<=n; i++)
ans+=solve(i);
inline int solve(int x) {
int an=0;
while(x) {
an=an+x%10;
x/=10;
}
}
  1. 可以先用暴力算出n=1e1,1e2,1e3,1e4,1e5,1e6,1e7,1e8,1e9时的答案
  2. 对于大于1e7的数据我们可以逐位来算

    举个较小的例子:7654

    第一位:7 ;

    (1) 则1~6一定都在第一位出现了1e3次;

    (2) 7出现了654+1次

    (3) 再加上7*ans(1e3时的答案)

    (4) 然后去掉这一位,原本的第二位,变成了现在的第一位

代码

#include<cstdio>
#include<iostream>
#include<cstring>
#include<ctime> using namespace std;
typedef long long ll;
int n;
ll ans;
ll a[20];
inline int solve(int x) {
int an=0;
while(x) {
an=an+x%10;
x/=10;
}
return an;
}
int main() {
freopen("count.in","r",stdin);
freopen("count.out","w",stdout);
scanf("%d",&n);
if(n<=1e7) {
for(int i=1; i<=n; i++)
ans+=solve(i);
printf("%d",ans);
return 0;
}
a[1]=45;
a[2]=900;
a[3]=13500;
a[4]=180000;
a[5]=2250000;
a[6]=27000000;
a[7]=315000000;
a[8]=3600000000LL;
if(n<1e8) {
ll temp=1e7,pos=7;
while(pos) {
int k1=n/temp;
k1--;
ans+=(ll)temp*(ll)k1*(ll)(k1+1)/2;
ans+=(ll)(k1+1)*(ll)a[pos];
ans+=(ll)(k1+1)*(ll)(n%temp+1);
n%=temp;
temp/=10;
pos--;
}
ans+=(ll)n*(ll)(n+1)/2;
printf("%lld",ans);
return 0;
}
if(n<1e9) {
ll temp=1e8,pos=8;
while(pos) {
int k1=n/temp;
ans+=(ll)temp*(ll)k1*(ll)(k1-1)/2; //(1)
ans+=(ll)(k1)*(ll)a[pos]; //(3)
ans+=(ll)(k1)*(ll)(n%temp+1); //(2)
n%=temp; //(4)
temp/=10; //(4)
pos--; //(4)
}
ans+=(ll)n*(ll)(n+1)/2;
printf("%lld",ans);
return 0;
}
return 0;
}

【数学】8.30题解-count数页码的更多相关文章

  1. 洛谷试炼场-简单数学问题-P1045 麦森数-高精度快速幂

    洛谷试炼场-简单数学问题 B--P1045 麦森数 Description 形如2^P−1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果PP是个素数,2^P-1 不一定也是素数.到19 ...

  2. P1836 【数页码_NOI导刊2011提高(04)】

    P1836 数页码_NOI导刊2011提高(04) 题目描述 一本书的页码是从1—n编号的连续整数:1,2,3,…,n.请你求出全部页码中所有单个数字的和,例如第123页,它的和就是1+2+3=6. ...

  3. [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂

    题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...

  4. 【LSGDOJ 2015】数页码

    题目描述 一本书的页码是从 1-n 编号的连续整数:1, 2, 3, ... , n.请你求出全部页码中所有单个数字的和,例如第 123 页,它的和就是 1+2+3=6. 输入 一行为 n(1 < ...

  5. 题解-[SDOI2014]数数

    [SDOI2014]数数 这题的前置知识是AC自动机和dp,前置题目是 [JSOI2007]文本生成器,前置题目我写的题解 题解-[JSOI2007]文本生成器.我的讲解假设你做过上面那道题. 这题比 ...

  6. [LeetCode 题解]: Count and Say

    The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...

  7. [转载]数学【p1900】 自我数

    题目描述-->p1900 自我数 本文转自@keambar 转载已经原作者同意 分析: 思路还是比较好给出的: 用类似筛选素数的方法筛选自我数. 但是要注意到题目限制的空间仅有4M,不够开10^ ...

  8. 洛谷【P839】【NOI导刊】——数页码

    题面 一道找规律好题... 首先,我们肯定只能一位一位的统计答案,考虑从高位向低位统计,显然这样要方便的多. 对于第i位,我们统计从$a[i+1]*10^i+0$到$a[i+1]*10^i+a[i]* ...

  9. LeetCode(38)题解: Count and Say

    https://leetcode.com/problems/count-and-say/ 题目: The count-and-say sequence is the sequence of integ ...

随机推荐

  1. JVM垃圾回收的三种方式

    * 垃圾回收有三种方式 * 一.清除:将需要回收对象的内存空间存放在内存列表中,当需要为新对象分配内存的时候,就会从内存列表中拿取空间分配.不过这种分配方式有两个缺点 * 第一个缺点是内存空间碎片化, ...

  2. OO第一单元总结-多项式求导

    OO第一单元总结-多项式求导 一.第一.第二次作业总结 因为前两次作业设计复杂度差别不大,因而放在这里统一总结. 基于度量分析程序结构: 前两次作业确实存在缺乏可拓展设计的构想,基本还是面向过程的思维 ...

  3. 事后分析$\alpha$

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 事后分析 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目标 组织组员 ...

  4. composer 更新命令及常用命令

    composer 安装 官方地址:https://getcomposer.org/download/ 下载地址:https://getcomposer.org/Composer-Setup.exe 下 ...

  5. 计划任务 at & crond tbc

    一次性任务 at 工具 由包 at 提供 依赖与atd服务,需要启动才能实现at任务 at队列存放在/var/spool/at目录中 执行任务时PATH变量的值和当前定义任务的用户身份一致 作业执行命 ...

  6. ES6笔记2

    ES6笔记2 Promise Promise 是 ES6 引入的异步编程的新解决方案,语法上是一个构造函数 一共有3种状态,pending(进行中).fulfilled(已成功)和rejected(已 ...

  7. Python+Selenium自动化-获取页面信息

    Python+Selenium自动化-获取页面信息   1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import t ...

  8. java中存储mysql数据库时间类型【date、time、datetime、timestamp】

    在MySQL中对于时间的存储自己见表的时候都是设置的varchar类型的,感觉挺方便的. 昨天拿别人建好的表写代码,发现这张表中时间类型为datetime的,凭感觉试了一下不行,网上查了刚开始试了好几 ...

  9. 理想的GVS智能照明体验,就在汕头迎宾花园酒店

    汕头,依海而生,海在城中央是汕头特色. 汕头湾将汕头分为南北两岸,造就绝美市区海岸线,一碧万顷的海湾,焕然一新的海港,在市区就能直接看海. 在北山湾,动可结伴冲浪,静可观海吹风,动静都是一种快乐. 当 ...

  10. 【八】Kubernetes 五种资源控制器详细介绍以及功能演示

    一.控制器说明 Pod 的分类: 自主式 Pod:该类型的 Pod 无论是异常退出还是正常退出都不会被创建,也就是说没有对应的管理者. 控制器管理的 Pod:该类型 Pod 在控制器的生命周期里,控制 ...