LeetCode 2698. 求一个整数的惩罚数:模拟(二进制枚举)

【LetMeFly】2698.求一个整数的惩罚数:模拟(二进制枚举)

力扣题目链接:https://leetcode.cn/problems/find-the-punishment-number-of-an-integer/

给你一个正整数 n ,请你返回 n 的 惩罚数 。

n 的 惩罚数 定义为所有满足以下条件 i 的数的平方和:

  • 1 <= i <= n
  • i * i 的十进制表示的字符串可以分割成若干连续子字符串,且这些子字符串对应的整数值之和等于 i

 

示例 1:

输入:n = 10
输出:182
解释:总共有 3 个整数 i 满足要求:
- 1 ,因为 1 * 1 = 1
- 9 ,因为 9 * 9 = 81 ,且 81 可以分割成 8 + 1 。
- 10 ,因为 10 * 10 = 100 ,且 100 可以分割成 10 + 0 。
因此,10 的惩罚数为 1 + 81 + 100 = 182

示例 2:

输入:n = 37
输出:1478
解释:总共有 4 个整数 i 满足要求:
- 1 ,因为 1 * 1 = 1
- 9 ,因为 9 * 9 = 81 ,且 81 可以分割成 8 + 1 。
- 10 ,因为 10 * 10 = 100 ,且 100 可以分割成 10 + 0 。
- 36 ,因为 36 * 36 = 1296 ,且 1296 可以分割成 1 + 29 + 6 。
因此,37 的惩罚数为 1 + 81 + 100 + 1296 = 1478

 

提示:

  • 1 <= n <= 1000

方法一:模拟(二进制枚举)

其实很简单,用 i i i 1 1 1 n n n枚举,对于某个 i i i

i 2 i^2 i2转为字符串处理,接着用二进制从 0 0 0 2 l e n ( i 2 ) − 1 2^{len(i^2)}-1 2len(i2)1枚举“切割平方字符串的位置”,将每一部分的字符串相加看是否等于 i 2 i^2 i2即可。

  • 时间复杂度 O ( n × log ⁡ n ) O(n\times \log n) O(n×logn) log ⁡ n 2 = 2 × log ⁡ n \log n^2=2\times\log n logn2=2×logn
  • 空间复杂度 O ( log ⁡ n ) O(\log n) O(logn)

AC代码

C++
class Solution {
private:int check(int n) {string to = to_string(n * n);int l = to.size();for (int mask = 0; mask < (1 << l); mask++) {int cnt = 0;int nowNum = 0;for (int i = 0; i < l; i++) {nowNum = nowNum * 10 + (to[i] - '0');if ((mask >> i) & 1) {  // 这一位后面隔开cnt += nowNum;nowNum = 0;}}if (cnt + nowNum == n) {  // 想着“会有结尾的i是不行的”return n * n;}}return 0;}
public:int punishmentNumber(int n) {int ans = 0;for (int i = 1; i <= n; i++) {ans += check(i);}return ans;}
};
Python
class Solution:def check(self, n: int) -> int:to = str(n * n)l = len(to)for mask in range(1 << l):cnt = 0thisNum = 0for i in range(l):thisNum = thisNum * 10 + ord(to[i]) - ord('0')if (mask >> i) & 1:cnt += thisNumthisNum = 0if cnt + thisNum == n:return n * nreturn 0def punishmentNumber(self, n: int) -> int:return sum(self.check(i) for i in range(1, n + 1))

同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/134043248

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/121061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积神经网络的感受野

经典目标检测和最新目标跟踪都用到了RPN(region proposal network)&#xff0c;锚框(anchor)是RPN的基础&#xff0c;感受野(receptive field, RF)是anchor的基础。本文介绍感受野及其计算方法&#xff0c;和有效感受野概念。 1.感受野概念 在典型CNN结构中&#xff0c;FC层(…

DAY36 738.单调递增的数字 + 968.监控二叉树

738.单调递增的数字 题目要求&#xff1a;给定一个非负整数 N&#xff0c;找出小于或等于 N 的最大的整数&#xff0c;同时这个整数需要满足其各个位数上的数字是单调递增。 &#xff08;当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单…

PyCharm社区版安装

PyCharm社区版安装 到中国官网下载 https://www.jetbrains.com/zh-cn/pycharm/download/?sectionwindows 首次创建项目&#xff0c;会自动下载安装Python 3.9 社区版的区别 社区版的区别

数组的最长递减子序列

求一个数组的最长递减子序列 如{9&#xff0c;4&#xff0c;3&#xff0c;2&#xff0c;5&#xff0c;4&#xff0c;3&#xff0c;2}的最长递减子序列为{9&#xff0c;5&#xff0c;4&#xff0c;3&#xff0c;2} 思路&#xff1a;动态规划 构建与原数组同等容量的辅助数组dp,记…

t2vec 辅助笔记:data_utils

1 argsort 目的是对一个列表 seq 中的子列表或数组按其长度进行排序&#xff0c;并返回排序后的索引。 具体来说&#xff0c;它会按长度的降序排列&#xff0c;这意味着最长的子列表/数组的索引会在前面。def argsort(seq):"""sort by length in reverse order-…

代码随想录算法训练营第3天| 203.移除链表元素 、 707.设计链表 、 206.反转链表

JAVA代码编写 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示…

Steger算法实现结构光光条中心提取(python版本)

Steger算法原理 对结构光进行光条中心提取时,Steger算法是以Hessian矩阵为基础的。它的基础步骤如下所示: 从Hessian矩阵中求出线激光条纹的法线方向在光条纹法线方向上将其灰度分布按照泰勒多项式展开,求取的极大值即为光条在该法线方向上的亚像素坐标。对于二维离散图像来…

【黑马程序员】mysql基础篇笔记

2023年10月26日12:21:09过一下 1.01.MySQL课程介绍(Av765670802,P1) 2.02. 基础-课程内容&数据库相关概念(Av765670802,P2) 3.03. 基础-概述-MySQL安装及启动(Av765670802,P3) 4.04. 基础-概述-数据模型(Av765670802,P4) 通过表来存储数据的数据库就叫做关系型数据库 …

osg3.4的插件及功能

OpenSceneGraph(OSG) 学习之 核心结构(基础篇)-CSDN博客 OSG源码中主要包含17个库,每个库的功能如所示表 1 OSG核心库功能

Linux命令(106)之rename

linux命令之rename 1.rename介绍 linux命令rename是用来重命名文件名称。与mv不同的是&#xff0c;mv命令一次只能修改一个文件名&#xff0c;而rename命令能够对文件名进行批量修改 2.rename用法 rename [options] expression replace file... rename参数 参数说明-v详细输…

C++并发与多线程(6) | 传递临时对象作为线程参数的一些问题Ⅲ

一、传递类对象作为线程参数 #include<iostream> #include<thread>using namespace std;class A { public:mutable int m_i;//类型转换构造函数,可以把一个int转换成一个类A对象A(int a) :m_i(a) {cout << "[A::A(int a)构造函数执行]" << …

后端接口返回常见的状态码

2开头 &#xff08;请求成功&#xff09;表示成功处理了请求的状态代码 200 &#xff08;成功&#xff09; 服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。 201 &#xff08;已创建&#xff09; 请求成功并且服务器创建了新的资源。 202 &#xf…

QQ云端机器人登录系统php源码开心版

可能很多人不知道这源码有什么用&#xff0c;这款源码主要是针对群机器人爱好者的&#xff0c; 这是一个通过对接挂机宝里面机器人框架的一个网页站点&#xff0c; 用户通过网页登录 QQ 账号至挂机宝里面框架&#xff08;可扫码登录、账密登录、跳转 QQ 快捷登录&#xff09;…

zabbix agent 6.0安装脚本

脚本如下&#xff1a; #!/bin/bash# Function to install Zabbix Agent 2 on RHEL 6 install_zabbix_rhel6() {# Check if the Zabbix repository is already installedif rpm -q zabbix-release &>/dev/null; thenecho "Zabbix repository is already installed.…

FOC系列(二)----继续学习DRV8301芯片

一、 程序框图 跟随上篇博客咱们继续往下看&#xff0c;下面是芯片内部的程序框图&#xff1a; 1.1 BUCK电路 1.2 内部各电源 1.3 SPI通信、栅极驱动器和时序控制器 1.4 MOSFET驱动电路 1.5 电流采样放大电路 数据手册只是给出了这一部分框图&#xff0c;但是没有更加详细的介…

Azure - 机器学习实战:快速训练、部署模型

本文将指导你探索 Azure 机器学习服务的主要功能。在这里&#xff0c;你将学习如何创建、注册并发布模型。此教程旨在让你深入了解 Azure 机器学习的基础知识和常用操作。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验…

Pico Neo4、Neo3开发手柄的使用交互监听

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR;public class InputEvent : MonoSingleton<InputEvent> {//*************输入设别**************************InputDevice leftHandController;Inp…

场效应管器件

在面试硬件方面的工作时&#xff0c;我们通常会被提问模电方面的知识。 场效应管简称FET,有三级&#xff1a;源极(S)、漏极(D)、栅极&#xff08;G&#xff09;&#xff1b;可以实现电压控制电流源&#xff1b;“源极和漏极之间的漏极电流Id&#xff0c;由栅极的负电压进行控制…

面向服务的架构设计理论与实践

面向服务的架构设计理论与实践 面向服务的架构概述 SOA的定义 SOA发展现状 面向Web服务的业务流程执行语言(BPEL) BPEL&#xff08;面向Web服务的业务流程执行语言&#xff09;是一种用于描述和执行业务流程的标准化语言。它可以帮助组织在分布式系统中协调和管理各种Web服务…

11.优化算法

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 优化算法一、优化算法二、QA 知识框架 No.1 优化算法 一、优化算法 二、QA