1 条题解

  • 2
    @ 2025-7-21 13:34:26

    本人最简代码,求打破//KZ为去除多余0的函数

    string ADD(string a,string b)
    {
    	a=KZ(a);b=KZ(b);
    	if(a.size()<b.size())swap(a,b);
    	string s="";short lost=0,pa=a.find('.'),pb=b.find('.');
    	if(pa==-1)pa=a.size();
    	if(pb==-1)pb=b.size();
    	for(int i=a.size()-1,j=b.size()-1;i>=0 || j>=0;i--,j--)
    	{	if(a[i]=='.' && b[j]=='.'){s='.'+s;continue;}
    		if(i==-1){a='0'+a;i++;}
    		else if(i-pa>j-pb){s=a[i]+s;j++;continue;}
    		if(j==-1){b='0'+b;j++;}
    		else if(i-pa<j-pb){s=b[i]+s;i++;continue;}
    		s=(char)(((short)(a[i]-'0')+(short)(b[j]-'0')+lost)%10+'0')+s;
    		lost=(((short)(a[i]-'0')+(short)(b[j]-'0')+lost)/10);
    	}
    	if(lost)s=(char)(lost+'0')+s;
    	return s;
    }
    

    deepseek对此的评价 DeepSeek-V3最新版 回答完成 搜索全网24篇资料 这段代码实现的是两个字符串形式数字的加法运算,支持带小数点的数字相加。以下是代码的主要功能解析:

    预处理阶段: 调用KZ函数处理输入字符串(具体功能未展示,可能用于去除前导零等格式化操作) 确保a是较长的字符串,便于后续处理 小数点处理: 查找并记录两个字符串中小数点的位置 若不存在小数点,则将位置设为字符串末尾 核心加法逻辑: 从字符串末尾开始逐位相加 处理小数点对齐的情况 处理位数不等时的补零操作 计算当前位和及进位值 结果处理: 最后检查最高位是否还有进位 返回经过KZ处理后的结果字符串 该算法与常见的字符串加法实现类似,但有以下特点:

    支持带小数点的数字相加 采用从右向左的遍历方式 使用lost变量记录进位值 动态补零处理不等长数字 类似实现可以参考二进制字符串相加的算法,只是将基数从2改为10,并增加了小数点处理逻辑。对于大数运算,这种字符串逐位处理的方法是通用解决方案。

    • @ 2025-7-25 22:14:28

      哇,qiyunfei真的太厉害了,这么高难度的代码都可以写出来!!!!!太厉害了,赶紧点赞收藏!

  • 1

信息

编号
2369
时间
1000ms
内存
256MiB
难度
4
标签
递交数
8
已通过
1
上传者