首页 > 其他分享 >2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中

时间:2023-06-12 20:35:52浏览次数:47  
标签:10 06 help long seed ans 正整数 回文

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。

现在,给定两个正整数 L 和 R (以字符串形式表示),

返回包含在范围 [L, R] 中的超级回文数的数目。

输入:L = "4", R = "1000"。

输出:4。

答案2023-06-12:

该算法的基本思路是从较小的回文数开始,一步步扩大得到超级回文数,检查是否在规定区间内,直到扩大的回文数超过给定区间右端点或者已经统计到所有的超级回文数。

大体步骤如下:

1.定义函数 superpalindromesInRange,输入两个正整数的字符串表示 leftright,返回包含在范围 [L, R] 中的超级回文数的数目。此函数的返回值为整数类型 int

2.将输入的字符串形式的正整数 leftright 分别转换成整数类型的变量 lr

3.将变量 r 开根号并取整,得到变量 limit。用变量 cnt 记录超级回文数的个数,初值为0。

4.变量 seed 初值为1,用于产生超级回文数。若当前 seed 对应的超级回文数已大于 r 的平方根,则跳出循环;否则进行下一步。

5.将变量 seed 进行第一次扩大,即将 seed 转化为一个更大的回文数,保存在变量 enlarge 中。

6.如果 enlarge 的平方数是超级回文数,则将 cnt 加一。

7.将变量 seed 进行第二次扩大,即将 seed 转化为一个更大的回文数,保存在变量 enlarge 中。

8.如果 enlarge 的平方数是超级回文数,则将 cnt 加一。

9.将 seed 加1。

10.回到步骤4,循环直到 seed 对应的扩大回文数大于 r 的平方根。

11.返回 cnt 作为函数的结果。

时间复杂度为 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_字符串,其中 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_字符串_02 表示 right 的值,因为超级回文数的范围不超过 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_#include_03,而对于每一个超级回文数,需要判断其是否在 [L, R] 范围内,这个判断需要 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_#include_04 的时间;同时,为了判断一个数是否是回文数,需要将其最高位和最低位一一比较,即需要 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_回文数_05 的时间,最多需要比较 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_回文数_05 次,因此判断回文数的时间复杂度为 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_回文数_07。因此,总时间复杂度为 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_字符串_08

空间复杂度为 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_字符串_09,因为程序只使用了常数个变量。

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_回文数_10

go语言完整代码如下:

package main

import (
	"fmt"
	"math"
	"strconv"
)

func superpalindromesInRange(left string, right string) int {
	l, _ := strconv.ParseInt(left, 10, 64)
	r, _ := strconv.ParseInt(right, 10, 64)
	limit := int64(math.Sqrt(float64(r)))
	cnt := 0
	seed := int64(1)
	enlarge := int64(0)
	for {
		enlarge = enlarge2(seed)
		if isValid(enlarge*enlarge, l, r) {
			cnt++
		}
		enlarge = enlarge1(seed)
		if isValid(enlarge*enlarge, l, r) {
			cnt++
		}
		seed++
		if enlarge >= limit {
			break
		}
	}
	return cnt
}

func enlarge1(seed int64) int64 {
	var ans int64 = seed
	seed /= 10
	for seed != 0 {
		ans = ans*10 + seed%10
		seed /= 10
	}
	return ans
}

func enlarge2(seed int64) int64 {
	var ans int64 = seed
	for seed != 0 {
		ans = ans*10 + seed%10
		seed /= 10
	}
	return ans
}

func isValid(ans int64, l int64, r int64) bool {
	return isPalindrome(ans) && ans >= l && ans <= r
}

func isPalindrome(n int64) bool {
	var help int64 = 1
	for n/help >= 10 {
		help *= 10
	}
	for n != 0 {
		if n/help != n%10 {
			return false
		}
		n = (n % help) / 10
		help /= 100
	}
	return true
}

func main() {
	result := superpalindromesInRange("4", "1000")
	fmt.Println(result)
}

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_字符串_11

rust完整代码如下:

fn superpalindromes_in_range(left: String, right: String) -> i32 {
    let l: u64 = left.parse().unwrap();
    let r: u64 = right.parse().unwrap();
    let limit = (r as f64).sqrt() as u64;
    let mut cnt = 0;
    let mut seed = 1;
    let mut enlarge = 0;
    loop {
        enlarge = enlarge2(seed);
        if is_valid(enlarge * enlarge, l, r) {
            cnt += 1;
        }
        enlarge = enlarge1(seed);
        if is_valid(enlarge * enlarge, l, r) {
            cnt += 1;
        }
        seed += 1;
        if enlarge >= limit {
            break;
        }
    }
    cnt
}

fn enlarge1(seed: u64) -> u64 {
    let mut ans = seed;
    let mut tmp = seed / 10;
    while tmp != 0 {
        ans = ans * 10 + tmp % 10;
        tmp /= 10;
    }
    ans
}

fn enlarge2(seed: u64) -> u64 {
    let mut ans = seed;
    let mut tmp = seed;
    while tmp != 0 {
        ans = ans * 10 + tmp % 10;
        tmp /= 10;
    }
    ans
}

fn is_palindrome(n: u64) -> bool {
    let mut help: u64 = 1;
    let mut tmp = n;
    while tmp / help >= 10 {
        help *= 10;
    }
    while tmp != 0 {
        if tmp / help != tmp % 10 {
            return false;
        }
        tmp = (tmp % help) / 10;
        help /= 100;
    }
    true
}

fn is_valid(ans: u64, l: u64, r: u64) -> bool {
    is_palindrome(ans) && ans >= l && ans <= r
}

fn main() {
    let result = superpalindromes_in_range(String::from("4"), String::from("1000"));
    println!("{}", result);
}

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_字符串_12

c++完整代码如下:

#include <iostream>
#include <string>
#include <cmath>

using namespace std;

long long enlarge1(long long seed);
long long enlarge2(long long seed);
bool isPalindrome(long long n);
bool isValid(long long ans, long long l, long long r);
int superpalindromesInRange(string left, string right);

int main() {
    int result = superpalindromesInRange("4", "1000");
    cout << result << endl;
    return 0;
}

long long enlarge1(long long seed) {
    long long ans = seed;
    seed /= 10;
    while (seed != 0) {
        ans = ans * 10 + seed % 10;
        seed /= 10;
    }
    return ans;
}

long long enlarge2(long long seed) {
    long long ans = seed;
    while (seed != 0) {
        ans = ans * 10 + seed % 10;
        seed /= 10;
    }
    return ans;
}

bool isPalindrome(long long n) {
    long long help = 1;
    while (n / help >= 10) {
        help *= 10;
    }
    while (n != 0) {
        if (n / help != n % 10) {
            return false;
        }
        n = (n % help) / 10;
        help /= 100;
    }
    return true;
}

bool isValid(long long ans, long long l, long long r) {
    return isPalindrome(ans) && ans >= l && ans <= r;
}

int superpalindromesInRange(string left, string right) {
    long long l = stoll(left);
    long long r = stoll(right);
    long long limit = sqrt(r);
    int cnt = 0;
    long long seed = 1;
    long long enlarge = 0;
    do {
        enlarge = enlarge2(seed);
        if (isValid(enlarge * enlarge, l, r)) {
            cnt++;
        }
        enlarge = enlarge1(seed);
        if (isValid(enlarge * enlarge, l, r)) {
            cnt++;
        }
        seed++;
    } while (enlarge <= limit);
    return cnt;
}

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_回文数_13

c语言完整代码如下:

#include <stdio.h>
#include <string.h>
#include <math.h>

long long enlarge1(long long seed);
long long enlarge2(long long seed);
int isPalindrome(long long n);
int isValid(long long ans, long long l, long long r);
int superpalindromesInRange(char* left, char* right);

int main() {
    int result = superpalindromesInRange("4", "1000");
    printf("%d\n", result);
    return 0;
}

long long enlarge1(long long seed) {
    long long ans = seed;
    seed /= 10;
    while (seed != 0) {
        ans = ans * 10 + seed % 10;
        seed /= 10;
    }
    return ans;
}

long long enlarge2(long long seed) {
    long long ans = seed;
    while (seed != 0) {
        ans = ans * 10 + seed % 10;
        seed /= 10;
    }
    return ans;
}

int isPalindrome(long long n) {
    long long help = 1;
    while (n / help >= 10) {
        help *= 10;
    }
    while (n != 0) {
        if (n / help != n % 10) {
            return 0;
        }
        n = (n % help) / 10;
        help /= 100;
    }
    return 1;
}

int isValid(long long ans, long long l, long long r) {
    return isPalindrome(ans) && ans >= l && ans <= r;
}

int superpalindromesInRange(char* left, char* right) {
    long long l = atoll(left);
    long long r = atoll(right);
    long long limit = sqrt(r);
    int cnt = 0;
    long long seed = 1;
    long long enlarge = 0;
    do {
        enlarge = enlarge2(seed);
        if (isValid(enlarge * enlarge, l, r)) {
            cnt++;
        }
        enlarge = enlarge1(seed);
        if (isValid(enlarge * enlarge, l, r)) {
            cnt++;
        }
        seed++;
    } while (enlarge <= limit);
    return cnt;
}

2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。 现在,给定两个正整数 L 和 R (以字符串形式表示), 返回包含在范围 [L, R] 中_#include_14

标签:10,06,help,long,seed,ans,正整数,回文
From: https://blog.51cto.com/moonfdd/6465218

相关文章

  • 2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为
    2023-06-12:如果一个正整数自身是回文数,而且它也是一个回文数的平方,那么我们称这个数为超级回文数。现在,给定两个正整数L和R(以字符串形式表示),返回包含在范围[L,R]中的超级回文数的数目。输入:L="4",R="1000"。输出:4。答案2023-06-12:该算法的基本思路是从较小的回......
  • 2023-06-12 运行旧的rouyi前端项目报错:unknown property 'disableHostCheck'
    运行,报错ERRORValidationError:Invalidoptionsobject.DevServerhasbeeninitializedusinganoptionsobjectthatdoesnotmatchtheAPIschema.-optionshasanunknownproperty'disableHostCheck'.Thesepropertiesarevalid:......
  • 尚医通-day06【医院模拟系统接口详细步骤】(内附源码)
    第01章-医院系统1、业务功能描述资料:资料>医院模拟系统>尚医通API接口文档.docx1.1、平台方参考《尚医通API接口文档.docx》进行业务接口的开发,接收医院方的接口调用,将医院信息、科室信息、排班信息等数据存入MongoDB。1.2、医院方每个医院有自己的业务平台,需参考《尚医通AP......
  • 51nod-1523 非回文
    原题链接1523 非回文题目来源: CodeForces基准时间限制:1 秒空间限制:131072 KB分值: 40 难度:4级算法题一个字符串是非回文的,当且仅当,他只由前p个小写字母构成,而且他不包含长度大于等于2的回文子串。给出长度为n的非回文串s。请找出字典序......
  • 【230612-2】三角形ABC中,角A=60度,AB=2,BC=根号6,AD是角A的平分线。求:AD=?(23年全国高考
    【题目】三角形ABC中,角A=60度,AB=2,BC=根号6,AD是角A的平分线。求:AD=?(23年全国高考甲卷理科,16,5)......
  • hdu2068 RPG的错排(错排)
    思路:我们定义f(n)为n个人抽到的情况总数。对于第n个人,他要不抽中自己,即要抽中其他n-1个人,有n-1种可能,接下来讨论下,如果第n个人它抽中的人也抽中了第n个人,那么有f(n-2)种情况,如果第n个人抽中的人没有抽中第n个人,那么有f(n-1)可能,所以f(n)=(n-1)*(f(n-1)+f(n-2))。      ......
  • hdu2066 一个人的旅行(最短路)
    思路:简单最短路#include<stdio.h>#include<string.h>#include<algorithm>usingnamespacestd;constintinf=1<<30;intT,S,D,n;intmap[1111][1111];intvis[1111],cast[1111];ints[1111],e[1111];voidDijkstra(){inti,j,minn,p......
  • 代理IP出现错误代码206是什么意思
    HTTP代理是一种广泛使用的网络访问方式,然而在实际应用中,常常会遇到多种错误码,其中206错误码也经常出现。本文旨在向读者介绍206错误码的含义以及如何处理此类问题。206错误码是HTTP协议定义的一种状态码,它表示了服务器成功处理了部分GET请求。通俗来说,就是当我们用HTTP代理......
  • C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612
    C#.NETFrameworkRSA私钥签名公钥验签(验证签名)ver:20230612 环境说明:.NETFramework4.6的控制台程序 。 .NETFramework 对于RSA的支持:NETFramework内置只支持XML格式的私钥/公钥。如果要用PKCS1,PKCS8格式的,要用到三方库BouncyCastle。 核心重点是拿到.NET......
  • 我的收藏周刊063
    文章分享资本家也不想996,其实是迫于无奈呀从侧面谈谈996,即996的动机,有什么替代方案,不去996的好处,而不是一味的谈996如何不好,因为这个现象是多因素导致,不能孤立的看某一方面。什么是SR-TPSR-TP,MPLS-TP,SR-TE,SRV-BE,PTN,IPRAN这些技术之间有何联系,看看这篇文章。......