首页 > 其他分享 >题解 - 数字计数

题解 - 数字计数

时间:2024-07-03 08:59:26浏览次数:17  
标签:10 12 数字 题解 ll 计数 times10 define

题目

思路简析

正解是数位 dp,但是我不太会,所以我打分块。

考虑从 \(10^6\) 到 \(2\times10^6\) 和从 \(3\times10^6\) 到 \(4\times10^6\),其中真正的区别只有

观察到数据范围是 \(10^{12}\),分为一些块,每块长 \(10^6\) 会比较均衡,所以共有 \(10^6\) 个块。

最差情况是 \(n = 10^6+1\),\(吗= 10^{12}-1\),则总共约运算 \(10^6times12+10^6+10^6\times12 = 2.5\times10^7\) 次,理论上是通过的。

无论如何加个优化吧。

记忆化:将 \(x%10^6\) 存到一个数组里(但是每次只能省大约 \(5\) 次,其实没啥用。)。

那么考虑 \(10^6\) 正好是最长长度的一半,而且在 十亿位 上的 \(x\) 和 个位 上的 \(x\) 加和出来的效果相同,所以前 \(6\) 位和后 \(6\) 位都可以使用这个数组。

那就能省不少、、。

点击查看代码
#include <bits/stdc++.h>
namespace {
#define fiin(x) freopen(x".in", "r", stdin)
#define fiout(x) freopen(x".out", "w", stdout)
#define files(x) fiin(x), fiout(x)
using namespace std;
#define ll long long
#define db double
const int lob = 1e6;
}

ll a, b;
ll res[12];
void def (ll) ;
int main () {
#ifndef ONLINE_JUDGE
    files("test");
#endif
    scanf("%lld%lld", &a, &b);
    while (a%lob && a<b) def(a++);
    while (b%lob && a<b) def(b--);
    for (int i = a/lob; i < b/lob; ++ i) {
        int x = i;
        while (x) res[x%10] += lob, x /= 10;
        for (int j = 0; j < 10; ++ j) res[j] += 600000;
    } def(b);
    for (int i = 0; i < 10; ++ i) printf("%lld ", res[i]);
    return 0;
}

// ---

void def (ll x) {
    while (x) ++ res[x%10], x /= 10;
    return ;
}

标签:10,12,数字,题解,ll,计数,times10,define
From: https://www.cnblogs.com/stamorlin/p/18280597

相关文章

  • 07/02/2024 融合热身赛赛后总结&题解
    一、总体情况考试一共有五道题。这次考试失误严重,C题非常水的一道题做了快两个小时,严重影响了心态和做其它题的时间。最终3个小时只做了A,C......
  • [JLU] 数据结构与算法上机题解思路分享-第三次上机
    前言首先,请务必自己尽全力尝试实现题目,直接看成品代码,思维就被拘束了,也很容易被查重。这里只是思路解析的博客,代码仓库在JLU_Data_Structures_Record希望你能在这里找到你想要的:)正文A图的创建分数10作者朱允刚单位吉林大学请编写程序创建一个有向图。有向图中包含......
  • 维克日记 v0.4.2:开发者友好的数字化笔记工具
     维克日记,专为技术开发者和笔记爱好者设计的数字化笔记工具,以其强大的功能和灵活的配置赢得了用户的好评。软件采用Markdown语法,提供实时预览功能,让您的笔记编辑更加高效和直观。维克日记的用户界面简洁而功能齐全,无需复杂的设置,即可开始记录您的思路和创意。它支持表格可视化......
  • Python 作业题1 (猜数字)
    题目你要根据线索猜出一个三位数。游戏会根据你的猜测给出以下提示之一:如果你猜对一位数字但数字位置不对,则会提示“Pico”;如果你同时猜对了一位数字及其位置,则会提示“Fermi”;如果你猜测的数字及其位置都不对,则会提示“Bagels”。你有10次猜数字机会花十分钟,来实现一下吧......
  • 神经网络在机器学习中的应用:手写数字识别
            机器学习是人工智能的一个分支,它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一,因其强大的非线性拟合能力而广泛应用于各种领域,包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数据集中的手写数字进......
  • AT_tdpc_number 数 题解
    题目传送门前置知识数位DP|记忆化搜索解法本题的提交在luogu上挂了,建议去原站或Vjudge上提交。基础数位DP,记录当前位置、已填的数码之和,接着记忆化搜索即可。需要注意的是\(0\bmodd=0\),如果写得不太好看(未处理前导零)的话需要减去其贡献。代码#include<bits/......
  • SP8177 JZPEXT - Beautiful numbers EXTREME 题解
    题目传送门前置知识数位DP|同余解法同余的传递性:若\(\begin{cases}a,b\in\mathbf{Z}\\p,q\in\mathbb{N}^{*}\\q|p\end{cases}\),则当\(a\equivb\pmod{p}\)时有\(a\equivb\pmod{q}\)。故在本题中\(\bmod\)各非零数码均等于\(0\)等价于\(\bmod\)各......
  • 解码未来城市:探秘数字孪生的奥秘
    在科技日新月异的今天,"数字孪生"(DigitalTwin)这一概念如同一颗璀璨的新星,照亮了智慧城市、智能制造等多个领域的前行之路。本文将深入浅出地解析数字孪生的定义、技术原理、应用场景及未来发展,带您一窥这股引领时代潮流的力量。数字孪生的定义数字孪生,简而言之,是在虚拟世界中......
  • P5324 题解
    题意给定一个数列\(\{a_n\}\),定义一次删除操作为:假设当前序列长度为\(len\),删除序列中所有等于\(len\)的数。现在有\(m\)个操作,每次操作为单点修改或整体加减。每次操作完后,你需要修改若干个数,使得序列能够在若干次删除操作后被删空,求最小修改次数。数据范围:\(1\len,m......
  • 复旦大学2023--2024学年第二学期(23级)高等代数II期末考试第七大题解答
    七、(10分) 设$V$是$n$阶实矩阵全体构成的实线性空间, $A$是$n$阶正定实对称阵.对任意的$X,Y\inV$,定义二元函数$(X,Y)=\mathrm{tr}(XAY')$.(1)求证:$(-,-)$是$V$上的一个内积.(2)在上述内积下,$V$成为一个欧氏空间. 设$P,Q\inV$,$V$上的线性算子$......