【補題】P10424 [藍橋杯 2024 省 B] 好數(數位dp)

題意:

一個整數如果按從低位到高位的順序,奇數位(個位、百位、萬位……)上的數字是奇數,偶數位(十位、千位、十萬位……)上的數字是偶數,我們就稱之為“好數”。

給定一個正整數?N,請計算從?1?到?N?一共有多少個好數。

思路:

這里不對暴力進行講解,網上有非常多的題解,做法也很簡單,這個做法的緣由是我沒看數據量,認錯了,以為是數位dp,當時沒做出來,現在補上,也算是學習數位dp了
參考題解:P10424 [藍橋杯 2024 省 B] 好數 數位dp_藍橋杯好數問題-CSDN博客
原題主里面的cnt--是不必要的,講錯了

思路其實也不難,就是標準的數位dp,這里講解是怎么來理解這道題的數位dp的

dp[i]表示的是,當前位置之前填寫最高位的這個時刻,填剩下所有可能數的大小,往后就是默認填寫最高位數字的,如果不是很明白推薦? 董曉老師的數位dp

1.dp[i]代表當前這一位在填寫[1,3,5,7,9]或者[0,2,4,6,8](注意要小于數本身)的可能算上所有的個數,因為高位固定,低位一定能兩個區間都能取的,直接預處理pre數組,進行計算就好。個數就是能填的個數xpre[i],注意不包括本身

2.為什么不包括本身,因為本身是不可直接計算的,因為你計算的話可能超過本身的數。dp那里計算的是一定能得到的所有數,所以最后有一個if,判斷最后dp結束的那個數本身。

3.但這并沒有結束,因為其實奇數位是能填0的,前提是高位沒有任何數,所以加上最后的個數,就是答案。

代碼:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int N = 2e5+10;
const int INF = 1e18;
const int MOD = 1e9+7;int pre[20],num[20];void solve(){int n;cin >> n;pre[1]=1;for(int i=2;i<20;i++){pre[i]=pre[i-1]*5;}int cntt=1;while(n){num[cntt++]=n%10;n/=10;}cntt--;int sum=0;for(int i=cntt;i>=0;i--){int cur=num[i];if(cur){int cnt=0;if(i&1){cnt+=cur/2;}else{cnt+=(cur+1)/2;}sum+=cnt*pre[i];}if( (i&1) != (num[i]&1) ){break;}if(i==1 && num[i]&1){sum++;}}for(int i=cntt;i>1;i--){if(i&1){sum+=pre[i];}}cout << sum << endl;}signed main() {IOS;int t = 1;
//	cin >> t;while (t--) {solve();}}


?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77286.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77286.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77286.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

分布式存儲怎樣提高服務器數據的安全性?

分布式存儲是一種計算機數據存儲架構&#xff0c;主要是將數據信息分布存儲在多臺計算機或者是服務器上&#xff0c;以此來實現高可靠性、可擴展性和高性能&#xff0c;讓每個計算機或服務器可以通過網絡連接相互通信和協作。 分布式存儲系統會定期對重要的數據信息進行完整性檢…

數字IC后端培訓教程系列之PR Innovus工具寫出Calibre LVS用的Netlist詳細步驟

在數字IC后端設計實現chipfinish階段需要寫出很多數據&#xff0c;比如netlist&#xff0c;def&#xff0c;gds&#xff0c;lib和lef等文件。 今天給大家分享PR工具Innovus寫出Calibre物理驗證LVS要用的netlist的詳細步驟。 手把手教你debug解決物理驗證Calibre LVS錯誤 1&a…

TrueNAS scale(23.10) Restful API接口調用

背景 本文主要講解開源的NAS系統--TrueNAS的二次開發。 TrueNAS scale安裝 網上能找到很多類似的文章&#xff0c;本文就不介紹了&#xff0c;這里給一個視頻博主的傳送門&#xff1a; 司波圖 TrueNAS scale Resful API 接口 官網的 Resful API地址&#xff1a;TrueNAS REST…

卡爾曼濾波器淺聊

0 前言: 卡爾曼濾波屬于算法領域的,所以一些基本的數學概念是必須了解的 涉及到的數學基本概念 概念數學符號含義數學期望(Expected Value)E描述隨機變量平均取值的最核心概念概率(Probability)P(X= x i x_i xi?)隨機變量 X 取特定值 x i x_i xi?的概率方差(Varian…

1ll C++

在C++中,1ll 表示 long long 類型的整數常量1。這里的 ll 是 long long 的縮寫。這種寫法主要用于以下幾個方面: 1. 為什么需要 1ll? 在您的代碼中,1ll 主要用于 防止整數溢出 和 確保正確的類型轉換: cpp 復制 p = 1ll * p * i % MOD; f[i + 1] = 1ll * i * (i + 1) …

oracle 12c密碼長度,復雜度查看與設置

一 密碼長度和復雜度 Oracle 數據庫通過 PASSWORD_VERIFY_FUNCTION 來控制密碼復雜度。 1.1 查看當前的密碼復雜度設置 SELECT * FROM dba_profiles WHERE resource_name PASSWORD_VERIFY_FUNCTION; LIMIT表示分配給該 PROFILE 的密碼驗證函數名稱。如果為 NULL&#xff0c;…

指定運行級別

linux系統下有7種運行級別,我們需要來了解一下常用的運行級別,方便我們熟悉以后的部署環境,話不多說,來看. 開機流程&#xff1a; 指定數級別 基本介紹 運行級別說明: 0:關機 相當于shutdown -h now ??默認參數不能設置為0,否則系統無法正常啟動 1:單用戶(用于找回丟…

Appium工作原理及環境的搭建(1)

1、Appium的介紹&#xff1a; 一、什么是Appium Desktop&#xff1f; Appium Desktop是Appium項目的桌面版GUI工具&#xff0c;提供了一個友好的界面&#xff0c;用于啟動Appium服務器、查看設備日志、與設備交互、調試自動化腳本等。相比于命令行工具&#xff0c;Appium Des…

esp32cam遠程圖傳:AI Thinker ESP32-CAM -》 服務器公網 | 服務器 -》 電腦顯示

用AI Thinker ESP32-CAM板子訪問公網ip的5112端口并上傳你的攝像頭拍攝的圖像視頻數據&#xff0c;并寫一段python程序打開彈窗接受圖像實現超遠程圖像傳輸教程免費 1. 首先你要有一個公網ip也就是去買一臺擁有公網的服務器電腦&#xff0c;我買的是騰訊云1年38元的服務器還可…

【Pandas】pandas DataFrame copy

Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于將 DataFrame 中的數據轉換為指定的數據類型DataFrame.convert_dtypes([infer_objects, …])用于將 DataFrame 中的數據類型轉換為更合適的類型DataFrame.infer_objects([copy])用于嘗試…

緩存相關問題

Redis 持久化機制 緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級等問題 熱點數據和冷數據是什么 Memcache與Redis的區別都有哪些? 單線程的redis為什么這么快 redis的數據類型,以及每種數據類型的使用場景,Redis 內部結構 redis的過期策略以及內存淘汰機制 Redis 為什么…

2025年AI開發學習路線

目錄 一、基礎階段&#xff08;2-3個月&#xff09; 1. 數學與編程基礎 2. 機器學習入門 二、核心技能&#xff08;3-4個月&#xff09; 1. 深度學習與框架 2. 大模型開發&#xff08;重點&#xff09; 三、進階方向&#xff08;3-6個月&#xff09; 1. 多模態與智能體…

SvelteKit 最新中文文檔教程(19)—— 最佳實踐之身份認證

前言 Svelte&#xff0c;一個語法簡潔、入門容易&#xff0c;面向未來的前端框架。 從 Svelte 誕生之初&#xff0c;就備受開發者的喜愛&#xff0c;根據統計&#xff0c;從 2019 年到 2024 年&#xff0c;連續 6 年一直是開發者最感興趣的前端框架 No.1&#xff1a; Svelte …

【Kafka基礎】消費者命令行完全指南:從基礎到高級消費

Kafka消費者是消息系統的關鍵組成部分&#xff0c;掌握/export/home/kafka_zk/kafka_2.13-2.7.1/bin/kafka-console-consumer.sh工具的使用對于調試、測試和監控都至關重要。本文將全面介紹該工具的各種用法&#xff0c;幫助您高效地從Kafka消費消息。 1 基礎消費模式 1.1 從最…

CausalML 基于機器學習算法的因果推理方法

CausalML 是一個 Python 包&#xff0c;它使用基于最新研究的機器學習算法提供一套提升建模和因果推理方法。它提供了一個標準界面&#xff0c;允許用戶從實驗或觀察數據中估計條件平均處理效應 &#xff08;CATE&#xff09;&#xff0c;也稱為個體治療效應 &#xff08;ITE&a…

解鎖深度學習激活函數

在深度學習的廣袤天地里&#xff0c;激活函數宛如隱匿于神經網絡架構中的神奇密碼&#xff0c;掌控著模型學習與表達的關鍵力量。今天&#xff0c;就讓我們一同深入探究這些激活函數的奇妙世界&#xff0c;揭開它們神秘的面紗。 一、激活函數為何不可或缺&#xff1f; 想象一…

從零到有的游戲開發(visual studio 2022 + easyx.h)

引言 本文章適用于C語言初學者掌握基本的游戲開發&#xff0c; 我將用詳細的步驟引領大家如何開發屬于自己的游戲。 作者溫馨提示&#xff1a;不要認為開發游戲很難&#xff0c;一些基本的游戲邏輯其實很簡單&#xff0c; 關于游戲的開發環境也不用擔心&#xff0c;我會詳細…

大數據專業學習路線

大數據專業學習路線 目錄 基礎知識核心技術進階技能實戰項目職業發展學習資源學習計劃常見問題 1. 基礎知識 1.1 編程語言 Python&#xff1a;大數據分析的基礎語言 基礎語法和數據類型函數和模塊面向對象編程文件操作和異常處理常用庫&#xff1a;NumPy, Pandas, Matplot…

flink部署使用(flink-connector-jdbc)連接達夢數據庫并寫入讀取數據

flink介紹 1&#xff09;Apache Flink 是一個框架和分布式處理引擎&#xff0c;用于對無界和有界數據流進行有狀態計算。Flink 被設計在所有常見的集群環境中運行&#xff0c;以內存執行速度和任意規模來執行計算。 2&#xff09;在實時計算或離線任務中&#xff0c;往往需要…

用swift playground寫個ios應用和大模型或者網站交互

import SwiftUIstruct ContentView: View {State private var textFieldText: String ""State private var outputText: String "輸出將會顯示在這里"private let tip:String "消息已發送&#xff0c;請等待"State private var history:[Stri…