357. Count Numbers with Unique Digits

本文介绍了一种算法解决方案,用于解决LeetCode上Count Numbers with Unique Digits的问题。该问题要求统计在指定范围内没有重复数字的所有整数的数量。文章通过排列组合的方法进行解答,并提供了一个高效的C++实现。
摘要由CSDN通过智能技术生成

题目:Count Numbers with Unique Digits

原题链接:https://leetcode.com/problems/count-numbers-with-unique-digits/
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10^n.
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])
给出一个非负整数n,统计从0到10的n次方(左闭右开区间)中所有满足每以为都和其他位不相同的数字的个数。
例如n等于,则返回91。

这是一道排列组合,把所有范围内的数按照一位数,二位数,三位数这样来讨论,其中i位数一共有 9 * 9 * 8 *……这么多种可能,其中最高位不能是0,所以最高位是9种,然后从次高位开始往下依次是9种,8种。。。一直到1。注意,要是位数大于10的话是肯定会有重复的数字的,所以其实如果n >= 10,结果应该是一样的。然后把从一位数到2位数到n(或者十)位数的都统计一下再相加就可以了,代码如下:

class Solution {
public:
    // 这个函数统计n位数的情况下应该会有多少符合条件的组合
    int getTemp(int n) { 
        int temp = 9;
        int i = 0;
        while(--n) {
            temp *= (9 - i);
            i++;
        }
        return temp;
    }
    int countNumbersWithUniqueDigits(int n) {
        if (n == 0) return 1;
        int ans = 1;
        for(int i = 1; i <= n; ++i) {
            ans += getTemp(i);
        }
        return ans;
    }
};
Write a computer program that could be used to track, by lab, which user is logged into which computer: Lab Number Computer Station Numbers 1 1-5 2 1-6 3 1-4 4 1-3 ➢ You run four computer labs. Each lab contains computer stations that are numbered as the above table. ➢ Each user has a unique ID number. The ID starting with three characters (for example, SWE or DMT), and followed by three digits (like, 001). ➢ Whenever a user logs in, the user’s ID, lab number, and the computer station number are transmitted to your system. For example, if user SWE001 logs into station 2 in lab 3, then your system receives (SWE001, 2, 3) as input data. Similarly, when a user SWE001 logs off a station, then your system receives the user id SWE001. ➢ If a user who is already logged into a computer attempts to log into a second computer, display "invalid login". If a user attempts to log into a computer which is already occupied, display "invalid login". If a user who is not included in the database attempts to log out, display "invalid logoff". 输入格式 If user SWE001 is logged into station 2 in lab 3 and user DMT001 is logged into station 1 of lab 4, use + for logging in, - for logging off, and = for end of input: + SWE001 2 3 + DMT001 1 4 《面向对象程序设计 C++》 2022-2023 春季学期 2 / 4 - SWE001 = 输出格式 The status of all labs (who is logged into which computer). Otherwise, display invalid login or invalid logoff. You need to display the status of all labs even when the input is invalid.
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值