当前位置:网站首页>Cf1036c class numbers solution
Cf1036c class numbers solution
2022-07-06 07:29:00 【q779】
CF1036C Classy Numbers Answer key
Topic link :CF1036C Classy Numbers
The question : Define a number as “ Good number ”, If and only if its decimal representation does not exceed 3 3 3 A digital 1 ∼ 9 1 \sim 9 1∼9
for instance : 4 , 200000 , 10203 4,200000,10203 4,200000,10203 yes “ Good number ”, However 4231 , 102306 , 7277420000 4231,102306,7277420000 4231,102306,7277420000 No
Given [ l , r ] [l,r] [l,r], Ask how many x x x bring l ≤ x ≤ r l \le x \le r l≤x≤r, And x x x yes “ Good number ”
Altogether T ( 1 ≤ T ≤ 1 0 4 ) T(1 \le T \le 10^{4}) T(1≤T≤104) Group data , For each inquiry , Output an integer on a line to represent the answer
1 ≤ l i ≤ r i ≤ 1 0 18 1 \le l_i \le r_i \le 10^{18} 1≤li≤ri≤1018
General figures dp It can be used to solve ∑ i = l r f ( i ) \sum _{i=l}^{r} f(i) ∑i=lrf(i) The problem of ,
among f ( i ) f(i) f(i) As with the i i i A function or determinant related to the digits of
This question is slightly distorted , Then we will naturally record the occurrence of figures
set up f i , j f_{i,j} fi,j It means full i i i digit , Yes j j j A non 0 0 0 position
Using memory search , See the code for details.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <iomanip>
using namespace std;
#define int long long
#define INF 0x3f3f3f3f3f3f3f3f
#define N (int)()
int num[25],f[25][5];
// u Indicates the current number of digits ,st Represents the current j,limit Indicates whether there is a high limit
int dfs(int u,int st,bool limit)
{
if(!u)return 1;
if(!limit&&f[u][st]!=INF)
return f[u][st]; // Memorize
int up=limit?num[u]:9,ans=0;
for(int i=0; i<=up; i++)
{
if(!i)ans+=dfs(u-1,st,limit&&num[u]==i);
else if(st!=3)ans+=dfs(u-1,st+1,limit&&num[u]==i);
}
if(!limit) f[u][st]=ans; // Just record what has no upper limit
return ans;
}
int solve(int x)
{
int len=0;
while(x>0)
{
num[++len]=x%10;
x/=10;
}
return dfs(len,0,1);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
// freopen("check.in","r",stdin);
// freopen("check.out","w",stdout);
memset(f,0x3f,sizeof(f));
int Q;cin >> Q;
while(Q--)
{
int l,r;
cin >> l >> r;
cout << solve(r)-solve(l-1) << '\n';
}
return 0;
}
reference
[1] https://www.luogu.com.cn/blog/rated/solution-cf1036c
Reprint please explain the source
边栏推荐
猜你喜欢

剪映的相关介绍

杰理之BLE【篇】

JMeter performance test steps practical tutorial

【MySQL学习笔记32】mvcc

The way to learn go (I) the basic introduction of go to the first HelloWorld

Force buckle day31

Three no resumes in the software testing industry. What does the enterprise use to recruit you? Shichendahai's resume

杰理之BLE【篇】

Relevant introduction of clip image

软件测试界的三无简历,企业拿什么来招聘你,石沉大海的简历
随机推荐
Bit operation XOR
Word setting directory
TS 体操 &(交叉运算) 和 接口的继承的区别
jmeter性能测试步骤实战教程
The way to learn go (II) basic types, variables and constants
Chrome view page FPS
[JDBC] quick start tutorial
Jerry needs to modify the profile definition of GATT [chapter]
Sélectionnez toutes les lignes avec un symbole dans Word et changez - les en titre
The way to learn go (I) the basic introduction of go to the first HelloWorld
Crawling exercise: Notice of crawling Henan Agricultural University
C - Inheritance - polymorphism - virtual function member (lower)
Fundamentals of C language 9: Functions
mysql如何合并数据
Full Score composition generator: living on code
You deserve this high-value open-source third-party Netease cloud music player
Typescript void base type
First knowledge of OpenGL es learning (1)
2022年Instagram运营小技巧简单讲解
【线上问题处理】因代码造成mysql表死锁的问题,如何杀掉对应的进程