首页 > 其他分享 >2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除, 我们称这个整数为哈沙德数(Harshad number)。 给定一个整数 x, 如果 x 是哈沙德数,则返回

2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除, 我们称这个整数为哈沙德数(Harshad number)。 给定一个整数 x, 如果 x 是哈沙德数,则返回

时间:2024-11-16 15:30:47浏览次数:1  
标签:11 10 数字 哈沙德数 复杂度 整数 整除

2024-11-16:哈沙德数。用go语言,如果一个整数能够被它的各个数位上数字的和整除,

我们称这个整数为哈沙德数(Harshad number)。

给定一个整数 x,

如果 x 是哈沙德数,则返回 x 各个数位的数字和;

如果不是,则返回 -1。

输入: x = 18。

输出: 9。

解释:

x 各个数位上的数字之和为 9 。18 能被 9 整除。因此 18 是哈沙德数,答案是 9 。

答案2024-11-16:

chatgpt

题目来自leetcode3099。

大体步骤如下:

1.函数定义

  • 定义了一个函数 sumOfTheDigitsOfHarshadNumber,接受一个整数 x 作为参数,目的在于计算该数字的各个数位的和并判断是否为哈沙德数。

2.初始化总和

  • 在函数内部,初始化一个变量 s 为 0 用于保存数字各位的和。

  • 另外,将输入的 x 赋给循环变量 y,后续的操作将会用 y而不是直接修改 x

3.计算各位数字和

3.1.使用一个 for 循环,循环条件是 y 不等于 0。

3.2.在每次循环中:

3.2.1.使用 y % 10 获取 y 的最后一位数字,并将其加到 s 上。

3.2.2.然后通过 y /= 10y 除以 10,以去掉最后一位数字。

3.3.循环结束时,变量 s 中存储的即为 x 各位数字的和。

4.判断是否为哈沙德数

  • 在计算完数字和 s 之后,检查 x 是否能被 s 整除(x % s)。如果不能整除,函数返回 -1,表示 x 不是哈沙德数。

  • 如果能整除,则返回 s,表示 x 是哈沙德数,我们返回各个数字的和。

5.主函数

  • main 函数中,定义一个整数 x(在此例中为 18)。

  • 调用 sumOfTheDigitsOfHarshadNumber(x) 函数,并打印其返回值。

时间复杂度

  • 计算数字和的步骤涉及到对 x 的每一位进行一次访问。假设 x 的位数为 d,则时间复杂度为 O(d)。

  • 在十进制中,位数与数字大小的对数成正比(d = log10(x)),因此可以认为时间复杂度是 O(log x)。

空间复杂度

  • 函数中使用了几个整数变量(sy),这些变量的空间占用是常数级别的。

  • 因此,空间复杂度为 O(1),即常数级空间复杂度。

总结

  • 时间复杂度:O(log x)

  • 空间复杂度:O(1)

Go完整代码如下:

package main

import (
	"fmt"
)

func sumOfTheDigitsOfHarshadNumber(x int) int {
	s := 0
	for y := x; y != 0; y /= 10 {
		s += y % 10
	}

	if x%s != 0 {
		return -1
	}
	return s
}

func main() {
	x := 18
	fmt.Println(sumOfTheDigitsOfHarshadNumber(x))
}

在这里插入图片描述

Rust完整代码如下:

fn sum_of_the_digits_of_harshad_number(x: i32) -> i32 {
    let mut s = 0;
    let mut y = x;

    while y != 0 {
        s += y % 10;
        y /= 10;
    }

    if x % s != 0 {
        return -1;
    }
    s
}

fn main() {
    let x = 18;
    println!("{}", sum_of_the_digits_of_harshad_number(x));
}

在这里插入图片描述

标签:11,10,数字,哈沙德数,复杂度,整数,整除
From: https://www.cnblogs.com/moonfdd/p/18549390

相关文章

  • 大数据可视化模板免费分享 | 11种类别
    引言随着大数据技术在企业管理、金融分析、运营监控等领域的深入应用,越来越多的开发者和企业需要专业的大数据模板。本篇文章整理了多个高质量的大数据模板合集,帮助用户轻松上手、快速构建属于自己的数据分析系统。模板合集概览本次分享的大数据模板包含了11类,分别是金融类......
  • 1116及1115模拟赛
    \(T1\),大师,我悟了(doge)。树上问题可转化为二维偏序关系,一维是题目中要求的大小关系(也可以是等于),一维是数上某序关系(常为dfs序),用数据结构维护或扫描线等维护一个维,处理另一维。这道题考虑询问时每个结点由哪些节点贡献来。当\(u\)是\(v\)的祖先(dfs序关系)且\(dep[v]-dep[u]=time[v......
  • 11-RCE、编辑器漏洞、旁注、hydra练习
    1、RCE:分别实现ThinkPHP、Weblogic、Shiro漏洞的利用过程ThinkPHP满足条件:多语言特性开启、安装pear库、知道pearcmd.php路径、register_argc_argv=on的前提下且ThinkPHP在漏洞版本中,再实现漏洞过程。前端访问pearcmd文件,出现如下报错确定文件存在插入代码实现文件包......
  • 2024-11-16 特殊矩阵的压缩存储
    一、数组的存储结构1.一维数组:各元素大小相同,且物理上连续存放。a[i]=起始地址+i*siezof(数组元素大小)2.二维数组:b[j][j]=起始地址+(i*N+j)*sizeof(数组元素大小)二、特殊矩阵1.普通矩阵的存储:使用二维数组来存储。2.对称矩阵的压缩存储:若n阶方阵中任意一个元素aij都有ai......
  • 11/16
    Link。注意到,如果最后一个保留的数为\(i\),那么事实上可以取得数列一定是一个以\(i\)结尾的上升子序列和下降子序列交叉拼在一起而成,所以树状数组即可。Link。人类智慧可以发现操作次数不会太多,暴力即可。Link。本身并不难,转化难。设\(f(S)\)表示子集\(S\)构成的图连......
  • Metasploit Pro 4.22.5-2024111401 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.5-2024111401(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,releasedNov14,2024请访问原文链接:https://sysin.org/blog/metasploit-pro-4/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org世界上最广泛使用的渗透测试框......
  • 20141116电路板维修入门之集成电路代换技巧篇
    一、直接代换直接代换是指用其他IC不经任何改动而直接取代原来的IC,代换后不影响机器的主要性能与指标。其代换原则是:代换IC的功能、性能指标、封装形式、引脚用途、引脚序号和间隔等几方面均相同。其中IC的功能相同不仅指功能相同;还应注意逻辑极性相同,即输出输入电平极性、电......
  • [LeetCode] 911. Online Election
    Youaregiventwointegerarrayspersonsandtimes.Inanelection,theithvotewascastforpersons[i]attimetimes[i].Foreachqueryatatimet,findthepersonthatwasleadingtheelectionattimet.Votescastattimetwillcounttowardsourque......
  • 11/15
    好讨厌现在的自己我的能量太低了需要不断的慰藉我喜欢逃避野心家,思想家,我真的sb没有成就感绝望绝望绝望绝望绝望今天很drama,不想说什么了,难受,以后再写明天计划C语言5题【今天少了一道】下午去比赛前端考核作业【1/2】可能睡觉睡少了,不开心?洗洗睡了......
  • 2024.11.15 Codeforces Round 987(Div. 2)
    Solved:5/6Rank:74比赛链接A.PenchickandModernMonument给定一个不增序列,修改最少的数字使其不降。全都修改为出现次数最多的数即可。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;voidsolve(){intn;cin>>n;vector<int>a(n);......