高精度减法,高精度乘法
2015-08-24 18:59
274 查看
高精度减法
oj数据偏弱如果添加一个101-2就错了,下面这一步是为了防止错误的
if(a[aa]<’0’)
{
a[aa]+=10;
a[aa-1]–;
}
可能出现第一位的1被借走的的情况,所以加一个while找第一个不是0的
while(c[i]<=’0’)
i–;
高精度乘法
注意一下,字符向数组的转换。
主要思路就是两个数字相乘,第一个数字的第i位乘以第二个数字的第j位得到的将是第三个数字的第i+j位;注意一下得到数 的某一位是否大于10;
oj数据偏弱如果添加一个101-2就错了,下面这一步是为了防止错误的
if(a[aa]<’0’)
{
a[aa]+=10;
a[aa-1]–;
}
可能出现第一位的1被借走的的情况,所以加一个while找第一个不是0的
while(c[i]<=’0’)
i–;
#include<iostream> #include<stdio.h> #include<cmath> #include<string.h> #include<map> #include<algorithm> using namespace std; int main() { string a,b,c,temp; cin>>a>>b; if((a.length()<b.length())||(a.length()==b.length()&&a[0]<b[0])) { cout<<"-"; temp=a; a=b; b=temp; } int i=0; int aa=a.length()-1; int bb=b.length()-1; while(bb>=0) { if(b[bb]<=a[aa]) { c[i++]=a[aa--]-b[bb--]+'0'; }else{ a[aa-1]--; a[aa]=a[aa]+10; c[i++]=a[aa--]-b[bb--]+'0'; } } while(aa>=0) { if(a[aa]<'0') { a[aa]+=10; a[aa-1]--; } c[i++]=a[aa--]; } while(c[i]<='0') i--; for(int k=i;k>=0;k--) { cout<<c[k]; } return 0; }
高精度乘法
注意一下,字符向数组的转换。
主要思路就是两个数字相乘,第一个数字的第i位乘以第二个数字的第j位得到的将是第三个数字的第i+j位;注意一下得到数 的某一位是否大于10;
#include<iostream> #include<stdio.h> #include<cmath> #include<string.h> #include<map> #include<algorithm> using namespace std; int main() { string a,b; cin>>a>>b; int al,bl; al=a.length(); bl=b.length(); int aa[1005],bb[1005]; int c[2010]={0}; for(int i=0;i<al;i++) { aa[al-i-1]=a[i]-'0'; } for(int i=0;i<bl;i++) { bb[bl-i-1]=b[i]-'0'; } for(int i=0;i<al;i++) { for(int j=0;j<bl;j++) { c[i+j]=aa[i]*bb[j]+c[i+j]; } } for(int i=0;i<al+bl;i++) { if(c[i]>9) { c[i+1]=c[i+1]+c[i]/10; c[i]=c[i]%10; } } int cl=al+bl; while(cl>0&&c[cl]==0) cl--; for(int i=cl;i>=0;i--) cout<<c[i]; cout<<endl; return 0; }
相关文章推荐
- STL - vector algorithm
- Ubuntu下Sublime Text 3无法输入中文的解决方案
- Spring现有版本和下载地址
- ZOJ 3888 Twelves Monkeys
- 云恋社区官方地址
- 数据库测试点
- POJ 1200 Crazy Search(简单哈希)
- Html5新增小元素:figure与figurecaption address progress meter mark details与summary
- NYOJ 128 前缀式计算
- RecyclerView 列表控件中简单实现时间线
- 事务的含义理解
- 完数(hdu1406)枚举
- c语言字符串操作,及常用函数
- ZOJ 3885 The Exchange of Items
- Mac下配置zsh
- Leetcode -- Missing Number
- 软件开发中的数据库测试技术
- 防止vps上SSH被暴力破解密码
- 约数定理(约数个数定理,约束和定理)
- 正则表达式引擎浅析