首页 > 编程语言 >算法-统计桌面上的不同数字

算法-统计桌面上的不同数字

时间:2025-01-13 14:28:12浏览次数:3  
标签:数字 nums int 算法 range 桌面上 class

题目链接:2549. 统计桌面上的不同数字 - 力扣(LeetCode)

给你一个正整数 n ,开始时,它放在桌面上。在 109 天内,每天都要执行下述步骤:

  • 对于出现在桌面上的每个数字 x ,找出符合 1 <= i <= n 且满足 x % i == 1 的所有数字 i 。
  • 然后,将这些数字放在桌面上。

返回在 109 天之后,出现在桌面上的 不同 整数的数目。

注意:

  • 一旦数字放在桌面上,则会一直保留直到结束。
  • % 表示取余运算。例如,14 % 3 等于 2 。

示例 1:

输入:n = 5
输出:4
解释:最开始,5 在桌面上。 
第二天,2 和 4 也出现在桌面上,因为 5 % 2 == 1 且 5 % 4 == 1 。 
再过一天 3 也出现在桌面上,因为 4 % 3 == 1 。 
在十亿天结束时,桌面上的不同数字有 2 、3 、4 、5 。

示例 2:

输入:n = 3 
输出:2
解释: 
因为 3 % 2 == 1 ,2 也出现在桌面上。 
在十亿天结束时,桌面上的不同数字只有两个:2 和 3 。 

提示:

  • 1 <= n <= 100

Java

import java.util.HashSet;
import java.util.Set;

class Solution {
    public static int distinctIntegers(int n) {
        //第一天
        Set<Integer> numSet=new HashSet<>();
        numSet.add(n);
        while(n>0)
        {
            for(int i=1;i<=n;i++)
            {
                if(n%i==1)
                {
                   numSet.add(i);
                }
            }
            n--;
        }
        return numSet.size();
    }

    public static void main(String[] args) {
        System.out.println(distinctIntegers(5));
    }
}

C++

class Solution {
public:
    int distinctIntegers(int n) {
        vector<int> nums(n + 1);
        nums[n] = 1;
        for (int k = 0; k < n; k++) {
            for (int x = 1; x <= n; x++) {
                if (nums[x] == 0) {
                    continue;
                }
                for (int i = 1; i <= n; i++) {
                    if (x % i == 1) {
                        nums[i] = 1;
                    }
                }
            }
        }
        return accumulate(nums.begin(), nums.end(), 0);
    }
};

Python

class Solution:
    def distinctIntegers(self, n: int) -> int:
        nums = [0] * (n + 1)
        nums[n] = 1
        for _ in range(0, n):
            for x in range(1, n + 1):
                if nums[x] == 0:
                    continue
                for i in range(1, n + 1):
                    if x % i == 1:
                        nums[i] = 1
        return sum(nums)

标签:数字,nums,int,算法,range,桌面上,class
From: https://blog.csdn.net/silent702366/article/details/145110048

相关文章

  • 基于协同过滤算法与AI智能咨询的学生选课推荐系统设计与实现(源码+定制+开发)课程智能推
    博主介绍:  ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生......
  • 深入探索 DeepSeek-V3 的算法创新:Multi-head Latent Attention 的实现与细节
    引言在当今的大规模语言模型(LLM)领域,随着模型参数规模的指数级增长,如何在保证性能的同时优化计算效率和内存使用成为了一个核心挑战。DeepSeek-V3模型以其创新的架构和训练策略脱颖而出,其中Multi-headLatentAttention(MLA)是其关键技术之一。MLA的引入不仅解决了传统......
  • 数字化转型中的项目管理优化:协作工具的优势与应用
    一、企业数字化转型的背景与挑战1.1数字化转型的驱动力数字化转型是指企业通过采用数字技术、创新流程和业务模式,提升运营效率、创造新价值并优化客户体验。随着云计算、大数据、人工智能和物联网等技术的不断发展,数字化转型已成为企业实现长期竞争力和持续增长的重要战略目标......
  • 代码随想录算法训练营第6天 | 哈希表理论基础,242.有效的字母异位词,349. 两个数组的交
    一、刷题部分1.1哈希表理论基础原文链接:代码随想录题目链接:......
  • 数字化工具如何助力外贸企业赢得客户
    在瞬息万变的国际贸易环境中,服务创新成为外贸企业提升竞争力的重要抓手。通过优化客户体验和服务模式,不仅可以赢得客户的信任,还能建立持久的合作关系。服务创新的必要性1.提升服务在外贸中的战略地位与价格竞争相比,优质的服务更能赢得客户的青睐。特别是在同质化竞争日趋严重......
  • 算法随笔2:无重复字符的最长子串
    题目是这样的:给定一个字符串s,请找出其中不含有重复字符的最长子串的长度。例如:s="abcabcbb",答案:3。因为不含有重复字符的最长子串为"abc"。我们可以这么考虑这个问题。最终的答案的起始字母必然是字符串s里的其中一个字母。这句话听起来像是一句废话。但有时往往一道算......
  • 数字化工具助力外贸客户粘性提升
    在全球化市场竞争日益激烈的背景下,外贸企业要想在红海中脱颖而出,必须深耕客户体验,提供精细化服务,增强客户粘性。只有以客户为中心,创新服务模式,才能在长期合作中实现双赢。第一部分:客户粘性的价值与挑战1.客户粘性的核心价值客户粘性是企业持续盈利和长期发展的重要保障。粘性......
  • go语言:实现linear congruential generator线性同余发生器算法(附完整源码)
    go语言:实现linearcongruentialgenerator线性同余发生器算法代码说明:使用说明:线性同余发生器(LinearCongruentialGenerator,LCG)是一种常用的伪随机数生成算法。以下是用Go语言实现线性同余发生器的完整源码:packagemainimport( "fmt")//LCGstr......
  • go语言:实现lfu cache缓存算法(附完整源码)
    go语言:实现lfucache缓存算法代码说明使用示例在Go语言中实现LFU(LeastFrequentlyUsed)缓存算法可以通过使用一个映射来存储缓存项和它们的频率计数,同时维护一个最小频率的链表以便快速访问。下面是一个完整的LFUCache的实现示例:packagemainimport......
  • Rust 和 Tesseract OCR 实现英文数字验证码识别
    Rust是一门注重内存安全并具有高性能的系统编程语言。它通过并发机制和零成本抽象提供了强大的功能。我们可以利用Rust的库来调用TesseractOCR实现验证码识别。一、安装与配置安装TesseractOCR同样,首先要在系统中安装TesseractOCR。Ubuntu(Linux):bashsudoaptupda......