51nod 1027 大数乘法
生活随笔
收集整理的這篇文章主要介紹了
51nod 1027 大数乘法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1027?大數乘法 基準時間限制:1?秒 空間限制:131072?KB 分值:?0?難度:基礎題 ?收藏 ?關注 給出2個大整數A,B,計算A*B的結果。 Input 第1行:大數A
第2行:大數B
(A,B的長度?<=?1000,A,B?>=?0) Output 輸出A?*?B Input示例 123456
234567 Output示例 28958703552
#include<cstdio> #include<cstring> using namespace std; char s1[1011],s2[1011]; int len1,len2,a[1011],b[1011],c[2011]; int main() {scanf("%s%s",s1,s2);len1=strlen(s1);len2=strlen(s2);int x=0,y=0;for(int i=len1-1;i>=0;i--) a[++x]=s1[i]-'0';a[0]=x;for(int i=len2-1;i>=0;i--) b[++y]=s2[i]-'0';b[0]=y;for(int i=1;i<=a[0];i++)for(int j=1;j<=b[0];j++){c[i+j]+=(c[i+j-1]+a[i]*b[j])/10;c[i+j-1]=(c[i+j-1]+a[i]*b[j])%10;}c[0]=a[0]+b[0];while(!c[c[0]]&&c[0]>1) c[0]--;for(int i=c[0];i;i--) printf("%d",c[i]); }
#include<cstdio> #include<cstring> using namespace std; char s1[1011],s2[1011]; int len1,len2,a[1011],b[1011],c[2011]; int main() {scanf("%s%s",s1,s2);len1=strlen(s1);len2=strlen(s2);int x=0,y=0;for(int i=len1-1;i>=0;i--) a[++x]=s1[i]-'0';a[0]=x;for(int i=len2-1;i>=0;i--) b[++y]=s2[i]-'0';b[0]=y;for(int i=1;i<=a[0];i++)for(int j=1;j<=b[0];j++){c[i+j]+=(c[i+j-1]+a[i]*b[j])/10;c[i+j-1]=(c[i+j-1]+a[i]*b[j])%10;}c[0]=a[0]+b[0];while(!c[c[0]]&&c[0]>1) c[0]--;for(int i=c[0];i;i--) printf("%d",c[i]); }
錯誤:c數組大小應為a和b大小之和
轉載于:https://www.cnblogs.com/TheRoadToTheGold/p/6625054.html
總結
以上是生活随笔為你收集整理的51nod 1027 大数乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用反射修改final数据域
- 下一篇: jmeter 非gui 模式跑jmx