ACM 算法艺术与信息学竞赛 1.2.7 超长数字串

字符串中找出连续最长数字串(两种题型)--C++ 题目描述一:读入一个字符串str,输出字符串str中的连续最长的数字串 输入描述: 个测试输入包含1个测试用例,一个字符串str,长度不超过255。 输出描述: 在一行内输出str中里连续最长的数字串。 输入 abcd12345ed125ss123456789 输出 123456789 思路分析:将字符串中数字串分离出来,并且要计算出来哪个数字串的长度最长,需要做的工作就是将每一段的数... 阅读详情

题意


顺序打印的字符串

123456789101112131415161718~~~~

要找到给定数字串第一次出现的位置。

比如10第一次出现在10,1011也是出现在10位置。1第一次出现在1。


分析:

按照书上所说的枚举的思想来进行处理。思想主要是分段,比如

123可以分为

1,2,3一个段

也可以分为

3[123]13的一部分

那么在考虑分段时,主要采用以下原则

            /**  如果字符串全是0,那么直接在前面加上一个1,得到其BigInteger的值,并求其位置。
             *       如:0只会出现在10处,00出现在100处,000出现在1000处。
             * 分段时有如下考虑:(假设除头部head,余下部分为next).
             * 注意在分段过程中next的开头不能是以0字符开头。
             * 1、每分段的长度都比字符串长度(len)要小
             *         这里需要分两种情况处理。
             *         A、头部不能取到分段长度:
             *             这里又分两种情况:
             *          a、next部分可以取到或大于分段长度,这个易于处理,
             *          b、next部分不可以取到分段长度,这个不易处理。这个采用与2条件相同的方法来处理,即是只看next部分中的前几位。多出来的位数不要看。
             *         B、头部可以取到分段长度:比如111213,当分段长度为2时,头部可以取到11那么后面的数就顺理成章地推导下去了。但要注意head开头不能是0。
             * 2、每个分段的长度为len,但是头部与尾部均不足len,拼起来才足够。这时next的头部也不是能0开头。
             *         这里需要推导出头部的整个数字,比如99|15,按四位数分的话我们需要推出头部数为14[9915]00。从1499与1500中取了中间四位。
             * 3、整数字符串就是一个数(相当于第二种情况中头部长度为len),不可拆分比如100, 1000,
             *         这时也不可以以0做为开头。
             */
注意一个很重要的原则是,如果可以取整个分段长度的,都不可以以0开头。

粘个java与C++的代码(C++代转自百度博客)

用java主要是考虑到有直接的大数处理。C++呢相对速度很快。

import java.io.*;
import java.util.*;
import java.math.*;

public class Main {
    static final int ms = 250;
	static BigInteger [] beginValue = new BigInteger[ms];
    static final BigInteger negOne = BigInteger.valueOf(-1);
    static final BigInteger nine = new BigInteger("9");
    static BigInteger [] rec = new BigInteger[ms];
    static BigInteger minLength = new BigInteger("0");
//--------------------------------------------------------------------------//
    //取得后面一个数字.
    public static String getNextInt(String a){
        String t = new String("");
        int len = a.length(), v, m = 1;
        for (int i = len - 1; i >= 0; --i){
            char c = a.charAt(i);
            v = (int)(c - 48) + m;
            m = v / 10;
            v %= 10;
            t = (char)(v + 48) + t;
        }
        while (m > 0){
            v = m % 10;
            t = (char)(v + 48) + t;
            m /= 10;
        }
        return t;
    }
    //取得前一个数字
    public static String getFrontInt(String a){
        String t = new String("");
        int len = a.length(), v, m = 1;
        for (int i = len - 1; i >= 0; --i){
            char c = a.charAt(i);
            v = (int)(c - 48) - m;
            if (v < 0){
                v += 10;
                m = 1;
            } else {
                m = 0;
            }
            
            if (!(0 == i && v == 0)){
                t = (char)(v + 48) + t;
            }
        }
        if (t.length() == 0){
            t = "0";
        }
        return t;
    }
    //比较两个字符串看看是否相等:相等则返回共长,否则返回-1
    public static int isEqualString(String a, String line, int pos){
        int i;
        for (i = 0; i < a.length() && (pos + i) < line.length(); ++i){
            if (a.charAt(i) != line.charAt(pos + i)) {
                return -1;
            }
        }
        return i;
    }
    //这里按长度从next的segSize开始比较.
    public static boolean stringCompareBySegSize(String next, int segSize){
        int beginPos = segSize, ret = 0, next_len = next.length();
        String head = next.substring(0, segSize);
        while (beginPos < next_len){
            String back = getNextInt(head);
            ret = isEqualString(back, next, beginPos);
            if (-1 == ret) {
                return false;
            } else {
                beginPos += ret;
                head = back;
            }
        }
        return true;
    }
    //查看是否有进位
    public static boolean isCarryOut(String a){
        int len = a.length();
        for (int i = 0; i < len; ++i){
            if (a.charAt(i) != '9') return false;
        }
        return true;
    }
//    --------------------------------------------------------------------------//
    //rec[]数组记录了每种长度的起始位置:比如两位起始于10,一位起始于1
    public static void genBeginPos(){
        BigInteger [] len = new BigInteger[ms];
        BigInteger ten = BigInteger.ONE;
        len[0] = BigInteger.ZERO;
        rec[0] = BigInteger.ZERO;
        rec[1] = BigInteger.ONE;
        for (int i = 1; i < ms; ++i){
            len[i] = nine.multiply(ten);
            beginValue[i] = ten;
            ten = ten.multiply(BigInteger.valueOf(10));
        }
        for (int i = 2; i < ms; ++i){
            rec[i] = rec[i-1].add(len[i-1].multiply(BigInteger.valueOf(i-1)));
        }
    }
    public static BigInteger getPos(String value){
    	int len = value.length();
    	BigInteger bValue = beginValue[len];
    	BigInteger from = rec[len];
    	BigInteger ret = (new BigInteger(value)).subtract(bValue);
    	ret = ret.multiply(BigInteger.valueOf(len));
    	ret = from.add(ret);
    	return ret;
    }
    
    public static void setMinLength(BigInteger a){
    	if (minLength.compareTo(negOne) == 0 || minLength.compareTo(a) > 0) {
    		minLength = a;
    	}
    }
    
    public static boolean isAllZero(String a){
    	for (int i = 0; i < a.length(); ++i){
    		if (a.charAt(i) != '0') return false;
    	}
    	return true;
    }

    public static void main(String[] args) throws Exception {
        genBeginPos();
        BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = cin.readLine()) != null){
        	if (isAllZero(line)) {
        		line = "1" + line;
        		BigInteger pos = getPos(line);
        		pos = pos.add(BigInteger.ONE);
        		System.out.println(pos.toString());
        		continue;
        	}

            final int line_len = line.length();
            /**
             * 分段时有如下考虑:(假设除头部head,余下部分为next).
             * 注意在分段过程中next的开头不能是以0字符开头。
             * 1、每段的长度都比字符串长度(len)要小
             *         这里需要分两种情况处理。
             *         A、头部不能取到分段长度:
             *             这里又分两种情况:
             *          a、next部分可以取到分段长度,这个易于处理,
             *          b、next部分不可以取到分段长度,这个不易处理。
             *         B、头部可以取到分段长度:比如111213,当分段长度为2时,头部可以取到11那么后面的数就顺理成章地推导下去了。
             * 2、每个分段的长度为len,但是头部与尾部均不足len,拼起来才足够.
             *         这里需要推导出头部的整个数字,比如99|15,按四位数分的话我们需要推出头部数为14[9915]00。从1499与1500中取了中间四位。
             * 3、整数字符串就是一个数(相当于第二种情况中头部长度为len),不可拆分比如100, 1000,
             *    这时也不可以以0做为开头。
             */
            boolean have_find_min_length = false;
            int segSize = 1;
            minLength = negOne;
            for (segSize = 1; segSize < line_len; ++segSize){
                String head = new String(""), next = new String("");
                int head_len = 0, next_len = 0;
                
                minLength = negOne;
                //Condition 1.A
                for (int headSize = 1; headSize < segSize; ++headSize){
                    head = line.substring(0, headSize); head_len = head.length();
                    next = line.substring(headSize, line_len); next_len = next.length();
                    if (next_len > 0 && next.charAt(0) == '0') continue;
                    
                    if (next_len >= segSize){
                        //Condition 1.A.a
                        String value = next.substring(0, segSize);
                        String front = getFrontInt(value);
                        
                        //这里利用next[0~segSize)取得的front值与head进行比较
                        boolean ret = true;
                        for (int i = head.length() - 1, j = front.length() - 1;
                                i >= 0 && j >= 0; --i, --j){
                            if (head.charAt(i) != front.charAt(j)){
                                ret = false;
                                break;
                            }
                        }
                        
                        if (false == ret){
                            //比较失败,直接进行下轮测试。
                            continue;
                        } else {
                            //比较成功,那么从next开始,向后比较。
                            boolean bNextEqualToSegmentSize = stringCompareBySegSize(next, segSize);
                            if (false == bNextEqualToSegmentSize){
                                continue;
                            } else {
                                //这里需要推出完整的头值。
                                String beginValue = getFrontInt(value);
                                BigInteger pos = getPos(beginValue);
                                pos = pos.add(BigInteger.valueOf(beginValue.length() - head.length()));
                                setMinLength(pos);
                                //System.out.println("C 1.A.a Next larger than segSize: value = " + beginValue + " pos = " + pos.toString());
                                //System.out.println("Segment Size = " + segSize);
                            }
                        }
                    } else {
                        //Condition 1.A.b
                        String front_head = next.substring(0, segSize - head_len);
                        boolean bCarryOut = isCarryOut(head);
                        
                        String front_part_value = "";
                        if (bCarryOut){
                            front_part_value = getFrontInt(front_head);
                        } else {
                            front_part_value = front_head;
                        }
                        
                        String frontValue = "";
                        if (front_part_value.compareTo("0") != 0){
                            frontValue = front_part_value + head;
                        } else {
                            frontValue = head;
                        }
                        
                        String NextValue = getNextInt(frontValue);
                        boolean bIsEqual = true;
                        for (int i = 0, j = 0; i < NextValue.length() && j < next_len; ++i, ++j){
                            if (NextValue.charAt(i) != next.charAt(j)){
                                bIsEqual = false;
                                break;
                            }
                        }
                        
                        if (bIsEqual){
                            String beginValue = frontValue;
                            BigInteger pos = getPos(beginValue);
                            pos = pos.add(BigInteger.valueOf(beginValue.length() - head.length()));
                            setMinLength(pos);
                            //System.out.println("C 1.A.b Next small than segSize: value = " + beginValue + " pos = " + pos.toString());
                            //System.out.println("Segment Size = " + segSize);
                        } else {
                            continue;
                        }
                    }
                }
                
                //Condition 1.B
                if (line.charAt(segSize) != '0' && line.charAt(0) != '0'){
                    boolean bHeadEqualToSegmentSize = stringCompareBySegSize(line, segSize);
                    if (bHeadEqualToSegmentSize){
                    	String beginValue = line.substring(0, segSize);
                        BigInteger pos = getPos(beginValue);
                        setMinLength(pos);
                        //System.out.println("C1.B head equal to segSize: value = " + beginValue + " pos = " + pos.toString());
                    }
                }

                
                if (minLength.compareTo(negOne) != 0){
                	have_find_min_length = true;
                	break;
                }
            }
            
            
            //Condition 2
            if (true == have_find_min_length){
            	System.out.println(minLength.toString());
            	continue;
            }
            
            for (int headSize = 1; headSize < line_len && have_find_min_length == false; ++ headSize){
            	String head = line.substring(0, headSize); 
            	final int head_len = head.length();
            	String next = line.substring(headSize, line_len);
            	final int next_len = next.length();
            	if (next_len > 0 && next.charAt(0) == '0') continue;
            	
            	boolean bCarryOut = isCarryOut(head);
            	String beginValue = "";
            	if (bCarryOut) {
            		beginValue = getFrontInt(next) + head;
            	} else {
            		beginValue = next + head;
            	}
            	
                BigInteger pos = getPos(beginValue);
                pos = pos.add(BigInteger.valueOf(beginValue.length() - head.length()));
                setMinLength(pos);
                //System.out.println("C2 add equal to line_len: value = " + beginValue + " pos = " + pos.toString());
                //System.out.println("Segment Size = " + line_len);
            }
            
            //Condition 3
            if (line_len  > 0 && line.charAt(0) != '0'){
                String beginValue = line;
                BigInteger pos = getPos(beginValue);
                setMinLength(pos);
                //System.out.println("C3 hole length: front = " + beginValue + " pos = " + pos.toString());
                //System.out.println("Segment Size = " + line_len);
            }
            
            //最后的输出
            if (minLength.compareTo(negOne) != 0){
            	//System.out.println("Find min length");
            	System.out.println(minLength.toString());
            	continue;
            }
        }
    }
}


C++代码

 #include<cstdio>
 #include<cstring>

 class BigNum
 {
 public:
         BigNum(char *str,int _len)
         {
                 memset(a,0,sizeof(a));
                 len=_len;
                 for(int i=len-1;i>=0;i--) a[i]=(*str++)-'0';
         }
         BigNum(int n)
         {
                 memset(a,0,sizeof(a));
                 for(len=0;n;n/=10,len++) a[len]=n%10;
         }
         operator bool() { return len>0; }
         BigNum operator++()
         {
                 a[0]++;
                 int i;
                 for(i=0;i<len && a[i]>9;i++)
                 {
                         a[i]-=10;
                         a[i+1]++;
                 }
                 if(i==len)
                 {
                         a[i]=1;
                         len++;
                 }
                 return *this;
         }
         void inc()
         {
                 a[0]++;
                 for(int i=0;i<len && a[i]>9;i++)
                 {
                         a[i]-=10;
                         a[i+1]++;
                 }
         }
         friend BigNum operator+(BigNum a,BigNum b)
         {
                 if(a.len<b.len) a.len=b.len;
                 for(int i=0;i<a.len;i++) a.a[i]+=b.a[i];
                 a.ceil();
                 return a;
         }
         friend BigNum operator+(BigNum a,int b)
         {
                 return a+(BigNum)b;
         }
         friend BigNum operator-(BigNum a,BigNum b)
         {
                 for(int i=a.len-1;i>0;i--)
                 {
                         a.a[i]-=b.a[i];
                         a.a[i]--;
                         a.a[i-1]+=10;
                 }
                 a.a[0]-=b.a[0];
                 a.ceil();
                 return a;
         }
         friend BigNum operator-(BigNum a,int b)
         {
                 return a-(BigNum)b;
         }
         friend BigNum operator*(BigNum a,BigNum b)
         {
                 BigNum c=0;
                 c.len=a.len+b.len;
                 for(int i=0;i<a.len;i++)
                         for(int j=0;j<b.len;j++) c.a[i+j]+=a.a[i]*b.a[j];
                 c.ceil();
                 return c;
         }
         friend BigNum operator*(BigNum a,int b)
         {
                 return a*(BigNum)b;
         }
         friend bool operator<(BigNum a,BigNum b)
         {
                 if(a.len==b.len)
                 {
                         int i;
                         for(i=a.len-1;i>0 && a.a[i]==b.a[i];i--);
                         return a.a[i]<b.a[i];
                 }
                 else return a.len<b.len;
         }
         friend bool find(BigNum a,char *str)
         {
                 for(int i=a.len-1;i>=0 && *str;i--)
                         if(a.a[i]!=(*str++)-'0') return false;
                 return true;
         }
         void print()
         {
                 for(int i=len-1;i>=0;i--) printf("%d",a[i]);
                 printf("\n");
         }
         int a[300],len;
 private:
         void ceil()
         {
                 for(int i=0;i<len;i++)
                 {
                         a[i+1]+=a[i]/10;
                         a[i]%=10;
                 }
                 len++;
                 while(len && !a[len-1]) len--;
         }
 };

 bool pd(char *a)
 {
         BigNum t=9,now=0;
         for(char *p=a;*p;p++,t=t*10+9)
         {
                 if(*p!='0') return false;
                 now=now*10+t;
         }
         now=now+2;
         now.print();
         return true;
 }

 char a[210];
 void work()
 {
         int len=strlen(a);
         BigNum t=0,now=0;
         if(pd(a)) return;
         for(int i=1;i<=len;i++,t=t*10+9)
         {
                 now=now+t;
                 BigNum ans=0;
                 for(int j=0;j<i;j++)
                 {
                         if(a[j]=='0') continue;
                         BigNum prev(a,j);
                         prev.inc();
                         if(j>0 && !find(prev,a+i)) continue;
                         char nn[210];
                         int k;
                         for(k=0;k<i && a[j+k];k++) nn[k]=a[j+k];
                         for(;k<i;k++) nn[k]=prev.a[i-k-1]+'0';
                         BigNum n(nn,i),temp=n;
                         int p;
                         for(p=j+i;p<len && find(++n,a+p);p+=n.len);
                         if(p>=len)
                         {
                                 temp=(temp-1)*i-now-j+1;
                                 if(!ans || temp<ans) ans=temp;
                         }
                 }
                 if(ans)
                 {
                         ans.print();
                         break;
                 }
         }
 }

 int main()
 {
         while (scanf("%s",a) != EOF)
         {
			 work();
         }
         return 0;
 }


基于 Langchain 开发一个完整的支持多轮数据分析(直连 mysql 数据,多表综合分析 SQL 取数,数据分析,报表生成)ChatBI 系统(前后端完整实现源代码) ChatBI系统开发摘要 本文介绍了基于Langchain的多轮数据分析ChatBI系统开发方案。该系统支持MySQL数据库连接,提供多表分析、SQL查询、数据分析和报表生成功能。系统采用前后端分离架构:前端使用React+Ant Design+ECharts实现交互界面;后端基于FastAPI搭建服务,集成Langchain处理自然语言到SQL的转换;核心技术栈还包括SQLAlchemy、Pandas和Matplotlib。 系统核心模块包括: 数据库连接层:使用SQLAlchemy管理MySQL连接 L 阅读详情

相关推荐

RV1126 ISP开发实战:从Tuner调试到IQ文件解析

本文详细介绍了RV1126 ISP开发的完整流程,从Tuner调试到IQ文件解析,涵盖了环境搭建、工具使用、参数配置及性能优化等关键环节。通过实战案例和避坑指南,帮助开发者快速掌握Rockchip芯片的ISP开发技巧,提升图像处理质量。

weixin_29195615的博客 571

超长数字串(1.2.7 )

<br />超长数字串<br />给一个数字串T:12345678910111213141516171819202122...它是由所有自然数从小到大排列起来的。任意给一个数字串S,容易知道它一定在T中出现无穷多次。编程求出它第一次出现的位置。例如对于串"81",它最先出现在位置27。<br />设S1的长度为n。注意用串匹配来做的话时间复杂度至少为O(10^n),不是有效算法。应该枚举S1的“分段方式”。例如231241,如果分段方式为23|124|1,则124为完整的一段,前面必为123,后面必为125

rpbarry的专栏 2466

工业相机TEC散热技术:从原理到高精度成像的实战解析

本文深入解析了工业相机TEC散热技术的核心原理与实战应用。通过阐述热电制冷器如何利用帕尔帖效应实现精准温控,有效抑制图像传感器暗电流噪声,从而保障高精度成像的稳定性。文章结合工业场景痛点,提供了从TEC选型、系统集成到控制逻辑的完整设计指南,并分享了不同应用场景下的实战案例,是提升工业视觉系统成像质量的关键技术解析。

weixin_29269441的博客 412

[vijos1005]超长数字串

超长数字串 背景 George很喜欢数学,尤其是算数数系列。 描述 他最喜欢的是数字的无穷序列,结果是把所有的自然数按升序排列。这个序列开始是: 1234567891011121314... 我们叫序列 S。然后 S[1] = 1, S[2] = 2, ... , S[10] = 1, S[11] = 0, ... , 以此类推。 George 现有一个数字系列 A ,他想知道在S中最早...

diejueza5100的博客 1551

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6550

(功能安全六)硬件FMEDA计算

FMEDA(故障模式、影响与诊断分析)是功能安全验证的核心方法,通过量化分析硬件故障模式及其影响,计算SPFM、LFM、PMHF等关键指标。分析过程包含六大步骤:计算元器件失效率、识别故障模式、评估安全机制诊断覆盖率、分类计算各类失效率、量化指标计算及设计优化。输入需要系统架构图、硬件故障模式清单等资料,输出安全指标达标情况及改进建议,确保设计满足ASIL等级要求。该方法通过系统化的故障分类和量化评估,为硬件安全设计提供科学依据。

Dayongger的博客 1449

【模拟】Vijos P1005 超长数字串

题目链接:   https://vijos.org/p/1005 题目大意:   无限的正整数按顺序拼接成字符串S(S=12345678910111213...),给你一个字符串A(len<=200)求这个字符串在S中最早出现的位置。   (答案超过long long ,无法用KMP,不要相信标签) 题目思路:   【模拟】   这题简直了!!!!!!大模拟啊。细节超...

PHILIP0917的博客 401

YOLO+OpenClaw缺陷检测智能体 | 低代码工业质检自动化方案 | 含YOLO模型训练/智能体集成/任务全流程,支持离线日报/预警/趋势分析,解决实时性瓶颈问题(下篇)

某PCB板制造商需要对生产线上的PCB板进行缺陷检测,主要检测划痕、凹坑、污渍和裂纹等缺陷。原有人工检测方式效率仅为200件/小时,漏检率达5%,且检测人员长期工作易疲劳。

qq_36130719的博客 205

最长的数字串(华为机试)

请在一个字符串中找出连续最长的数字串,并返回这个数字串。如果存在长度相同的连续数字串,返回最后一个。如果没有符合条件的字符串,返回空字符串””。数字串可以由数字”0-9″、小数点”.”、正负号”±”组成,长度包括组成数字串的所有符号。“.”、“±”仅能出现一次,”.”的两边必须是数字,”±”仅能出现在开头且其后必须要有数字。长度不定,可能含有空格。输入输出示例仅供调试,后台判题数据一般不包含示例+12345.678。

u012078267的博客 282

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 240

基于Simulink的无线充电系统LCC补偿网络建模与控制

本文详细介绍了基于Simulink的无线充电系统LCC补偿网络建模与控制方法。首先分析了无线充电系统面临的核心挑战,提出LCC补偿网络解决方案,阐述了其恒流输出和输入阻抗解耦原理。通过Simulink分步演示了系统建模过程,包括松耦合变压器、LCC+LC补偿网络、功率变换级搭建以及频率跟踪控制实现。仿真结果表明,LCC补偿系统在气隙变化和负载跳变下能保持输出电压稳定(波动±3%),效率达89%。文章还总结了工程实现要点,并探讨了动态充电、多负载系统等扩展应用。该教程为开发高效智能的无线充电系统提供了实用指导

amy_mhd的博客 63

枚举

1枚举思想 转自:http://blog.csdn.net/fairyroad/article/details/5598260#t0 我们总觉得枚举(enumeration)笨笨的,很多人就称之为“暴力算法(brute force enumeration)”;但是枚举却又总是我们面对算法问题时的第一反应。这让我想起很多生活在我们身边关心着我们的人,我们对他们总有点或烦或平淡无奇以致讨厌

a343649190的专栏 1082

uniapp - 详细手机端h5网页调用手机摄像头进行二维码识别扫描,在uniapp的H5移动端微信网页平台中,在浏览器中调用手机扫码功能详细教程,识别二维码并获取扫描结果(完整示例源码,一键复制即用

uniapp,h5,手机端网页,H5手机网页,uniapp开发h5实现扫码功能,uniapp微信h5网页扫码sdk使用教程,uniapp h5网页如何实现浏览器扫码,uniapp扫码功能怎么兼容h5_uniapph5怎么做扫码功能,uniapp的手机网页如何实现扫二维码一维码,浏览器H5实现js扫码,H5调用摄像头和扫一扫功能,亲测可用,H5调用本地摄像头实现扫一扫,uni-h5项目解决扫码功能,uniapp实现微信H5扫码,解决uniapp在H5端使用不能扫码问题,uni-app的h5扫码(二维码、条形码

✅ 精选推荐文章 1万+

ACM 算法艺术与信息竞赛 1.2.6 离散函数

这个题,如果认真看了题意就比较明白了。这里我直接引用百度上的博客 1010. Discrete Function 题目描述: 有一个函数,它的定义域:1 to N(2值域f(n)为long int(in C++)(最后证明在-2^31—2^31)。要求函数上的两个点a,b使得当x∈(a,b)函数f,在直线ab的下方,并且要求ab的倾角最大。 分析: 解法一:一开始只想到O(n^2

ju136的专栏 1255

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++反序输出详解:从字符数组到string的四种实现与避坑指南

字符串处理是C++入门阶段绕不开的基础功,而“反序输出”正是检验字符串存储、遍历与输入输出细节的经典场景。理解字符数组与string的底层存储原理,掌握strlen与sizeof的区别、cin.getline与全局getline的适用条件,是避免乱码和截断的关键。在实际工程与竞赛中,反序操作不仅用于简单输出,更是回文判断、单词翻转、数字反转等问题的思维基石。本文从字符串基本概念出发,逐步拆解字符数组、string容器、递归和双指针四种实现方式,结合高频踩坑点与自测用例,帮助读者构建扎实的字符串处理能力,并自

weixin_33804582的博客 356

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

字符串中找出连续最长的数字串

读入一个字符串str,输出字符串str中的连续最长的数字串  输入描述: 个测试输入包含1个测试用例,一个字符串str,长度不超过255。 输出描述: 在一行内输出str中里连续最长的数字串。 输入例子: abcd12345ed125ss123456789 输出例子: 123456789 简单题 import sys try: w

You_are_my_dream的博客 3284

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ACM数学知识体系

         在盛情收到学弟邀请给他们整理ACM数学方面的知识体系,作为学长很认真的弄了好久,希望各学弟不辜负学长厚爱!!!很抱歉由于电脑全盘格式化好多word、PPT都丢失,我尽量详细地给大家找到各知识点学习链接及题目链接,敬请原谅。里面很多牛人写的博客,我都贴了网址,大家认真看下吧!         本人数论博客地址:         http://blog.csdn.net/xh_rev...

lamborghini1993 9473

ACM模版 - Manacher(最长回文子串)算法

注释版:#include&lt;bits/stdc++.h&gt; #include&lt;cmath&gt; #define mem(a,b) memset(a,b,sizeof a) #define INF 0x3f3f3f3f using namespace std; typedef long long ll; const int maxn=100100; char a[maxn*2...

762

java输出字符串中最长的数字串

文章目录题目描述解题思路代码如下总结 题目描述 读入一个字符串str,输出字符串str中的连续最长的数字串 输入: abcd12345ed125ss123456789 输出: 123456789 以下是本篇文章正文内容,下面案例可供参考 解题思路 定义一个当前的字符串和长度,再定义一个最大的字符串和长度,遍历字符串str 当是数字时,将数字append字符串中,长度+1,当前的数字集合大于最大数字个数时,将当前存放的数字串(curNum)和数字串长度(maxLen)赋给记录最长的数字串(ma.

橘白呀啊的博客 1553

vijos P1005 超长数字串 解题报告

vijos P1005 超长数字串 解题报告 刷OJ遇到这个题,查不到比较清晰的解析,自己归纳了一下题解,借用ju136的代码,补充了自己对代码的理解。

qq_22584423的博客 1658

华为OJ——超长正整数相加

超长正整数相加 题目描述 请设计一个算法完成两个超长正整数的加法。 接口说明  /*  请设计一个算法完成两个超长正整数的加法。  输入参数:  String addend:加数  String augend:被加数  返回值:加法结果  */  public String AddLongInteger(String addend, String augend)  {

u010480899的博客 2333

java求得字符串中的最长数字串

求得“iou123jk3ui456789kljh23678h”中连续数字串并且返回最长的数字字符串长度 public static StringBuffer getMaxNum(String str1) { int maxLength=0; StringBuffer maxNumBuffer=null; int nowLength=0; StringBuf

zhangxiaomin1992的专栏 5022

【算法笔记】acm数学基础

// gcd拓展 an + bm = gcd(a, b) int ext_gcd(int &a, int n, int &b, int m) { if (m == 0) { a = 1; b = 0; return n; } int d = ex_gcd(b, m, a, n%m); b -= n / m * a; return

slowlight93的专栏 1479

在字符串中找出连续最长数字串【经典】

在字符串中找出连续最长的数字串,并把这个串的长度返回,如果是个空串则返回“ ”; #include <stdio.h> #include <malloc.h> #include <string.h>

alley98的博客 1669

【牛客网OJ题】超长正整数相加

问题描述: 请设计一个算法完成两个超长正整数的加法。 接口说明 /* 请设计一个算法完成两个超长正整数的加法。 输入参数: Stringaddend:加数 Stringaugend:被加数 返回值:加法结果 */ publicStringAddLongInteger(Stringaddend,Stringaugend) { /*在这里实现功能*/...

萌萌咚咚的博客 622
上一篇: 二进制位交换 反转 计数
下一篇: 素数
ju136
博客等级 码龄19年 95粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值