leetcode 357. 计算各个位数不同的数字个数
原创
©著作权归作者所有:来自51CTO博客作者DUT_LYH的原创作品,请联系作者获取转载授权,否则将追究法律责任
排列组合之后打表
以3位数为例所有的减去以0开头的
n不可能大于10

#include <iostream>
#include <map>
#include <math.h>
#include <vector>
using namespace std;
#define debug(x) cout<<#x<<": "<<x<<endl;
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
vector<int>ret={ 1,10, 91, 739, 5275, 32491, 168571, 712891, 2345851, 5611771, 8877691};
return ret[n];
}
};
long long Anm(long long n,long long m){
long long ret =1;
long long mm = m;
while(mm>0){
ret*=n;
mm--;
n--;
}
return ret;
}
int main()
{
long long ret[11]={0};
ret[0] = 10;
for(int i=1;i<11;i++){
ret[i]=Anm(10,i+1)-Anm(9,i) + ret[i-1];
}
for(auto i:ret){
cout<<i<<", ";
}
return 0;
}
