日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

357. Count Numbers with Unique Digits

發(fā)布時間:2023/11/29 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 357. Count Numbers with Unique Digits 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
357. Count Numbers with Unique Digits

Given a?non-negative?integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.

Example:
Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding?[11,22,33,44,55,66,77,88,99])

給定一個非負整數(shù)n,統(tǒng)計[0,10n)之間僅含不同數(shù)字的數(shù)。

分析:

  給定n,求[0,10n)范圍內各位均不相同的數(shù)的個數(shù),可分別求出[0,101),[101,102),……,[10n-1,10n)各區(qū)間內符合條件的數(shù)的個數(shù),再相加即為所求。

  求第k個區(qū)間[10k-1,10k)內包含不同數(shù)字的數(shù),即求所有k位數(shù)中符合條件的數(shù)。可通過排列組合來求得。第1位可取1~9共9種;第2位可取0~9,除去第1位所取的數(shù)字,共9種;第3位可取0~9,除去第1、第2位所取數(shù)字,共8種,……,第k位可取0~9,除去第1~k-1位所取數(shù)字,共(10-(k-1))=11-k種,記為f(k),即f(k)=11-k。

  所以所求結果即為f(1)+f(2)+...+f(k)。

  注意:1)當n=0時,取值范圍為[0,1),0符合條件,即f(0)=1。2)n>10時,11位以上的數(shù)必含有相同數(shù)字,因此,f(k)=0(k>10)。

代碼如下:

int countNumbersWithUniqueDigits(int n) {if (n <= 0) return 1;if (n == 1) return 10;int rst = 10, cnt = 2, coef = 9;int maxCnt = n > 10 ? 10 : n;while (cnt <= maxCnt){coef *= (11 - cnt);rst += coef;cnt++;}return rst; }

  

posted on 2018-03-20 15:44 bigpotato 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/big-potato/p/8609686.html

總結

以上是生活随笔為你收集整理的357. Count Numbers with Unique Digits的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。