7月21日知识点总结
这是暑假学习acm相关知识的第一篇博客,这次再次学习了一些基础算法,主要是高精度计算,高精度计算第一次接触是在新生赛,当时的数值很大,而且对字符串的应用也不熟练,只知道与数组有关,但这次已经学会使用字符串数组,所学习起来相对轻松。
基本问题
数据的的接收和储存,因为字符串可以输入位数很长的数字,然后再利用字符串函数,将每一位取出并存入数组。
代码:
string s;
int a [max];
int len=s.length();
for(int i=1;i<=len;i++)
a[i]=s[len-i]-'0';
进位和借位的处理,这一步要根据不同的命令分别进行操作:
加法进位:c[i]=a[i]+b[i];
if(c[i]>=10)
{c[i]%10;++c[i+1];}
减法借位:if(a[i]<b[i])
{–a[i+1];a[i]+=10;}
c[i]=a[i]-b[i];
乘法进位:c[i+j-1]=a[i]*b[i]+x+c[i+j-1];
x=c[i+j-1]/10;
c[i+j-1]%=10;
(未完)