51Nod 1009 数字1的数量 数位dp
生活随笔
收集整理的這篇文章主要介紹了
51Nod 1009 数字1的数量 数位dp
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
51Nod 1009 傳送門
模板orz 好難記的感覺……
#include<iostream> #include<algorithm> #include<string> #include<string.h> typedef long long ll; using namespace std; ll n, res; ll dp[20]; void init() {memset(dp, 0, sizeof(dp));for (int i = 1; i <= 10; i++)dp[i] = dp[i - 1]*10 + pow(10, i - 1); } ll DP(ll n) {ll ans = 0, len = 0, crt = 0;ll l = 0, r = 1;while (n) //比如n=12345,當前計算到crt=3 {crt = n % 10; n /= 10;len++; //len為數位,len=3,r=100if (crt > 1)ans += r + crt*dp[len - 1]; //前導1產生r個+其余的crt*dp[len-1]個(當前位前導1產生100個,其余位前導(1,2,3)產生3*dp[2]個)else if (crt == 1)ans += l + 1 + dp[len - 1]; //高位1產生l+1個+其余的dp[len-1]個l += crt*r; //l表示當前計算到的數,比如12345,當前計算到crt=3,l=345;r *= 10; //r=1000}return ans; } int main() {init();scanf("%d", &n) ;printf("%lld\n", DP(n));return 0; }?
轉載于:https://www.cnblogs.com/Egoist-/p/7628965.html
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!總結
以上是生活随笔為你收集整理的51Nod 1009 数字1的数量 数位dp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在原有的基础之上,启用NAT模型
- 下一篇: tyvj1467 通向聚会的道路