1 条题解
-
2
本人最简代码,求打破//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,并增加了小数点处理逻辑。对于大数运算,这种字符串逐位处理的方法是通用解决方案。
- 1
信息
- 编号
- 2369
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 8
- 已通过
- 1
- 上传者