大数定律
数据结构
struct arr{ int len; int a[N];//下标小的是低位,下标大的是高位 arr(){ int i; for(i=0;i<len;i++)a[i]=0; } };
对于输入的字符串我们要进行处理,变成一个标准的arr数据结构
arr transform(string str){ arr ans; int i; ans.len=str.length(); for(i=0;i<ans.len;i++){ ans.a[i]=str[ans.len-i-1]-'0'; } return ans; }
1.大数加
arr add(arr a,arr b){ arr ans; int i; ans.len=min(a.len,b.len); for(i=0;i<ans.len;i++) { ans.a[i] += a.a[i] + b.a[i]; ans.a[i + 1] += ans.a[i] / 10; ans.a[i] = ans.a[i] % 10; } if(ans.a[ans.len]>0)ans.len++; return ans; }
2.大数减
arr sub(arr a,arr b){ arr ans; int i; ans.len=a.len; for(i=0;i<a.len;i++){ ans.a[i]=a.a[i]-b.a[i]; if(ans.a[i]<0)ans.a[i]+=10,a.a[i+1]--; } i=ans.len; while(i-1>=0&&ans.a[i-1]==0)i--,ans.len--; return ans; }
3.大数乘
arr mutiply(arr a,arr b){ int i,j; arr ans; ans.len=a.len+b.len-1; for(i=0;i<a.len;i++){ for(j=0;j<b.len;j++){ ans.a[i+j]+=a.a[i]*b.a[j]; ans.a[i+j+1]+=ans.a[i+j]/10; ans.a[i+j]=ans.a[i+j]%10; } } if(ans.a[ans.len]>0)ans.len++; return ans; }
stay hungry stay foolish

浙公网安备 33010602011771号