Product //大数相乘
发布时间:2020-12-14 02:53:56 所属栏目:大数据 来源:网络整理
导读:#include stdio.h#include string.h#define N 1000void yiwei(char *ch,int a);void add(char *ch1,char *ch2);void rev(char *ch);int main(){ char ch1[N],ch2[N],ch3[N],ch4[N];int i,j,k; while(scanf("%s %s",ch1,ch2) != -1) { rev(ch1);rev(ch2); mem
#include <stdio.h> #include <string.h> #define N 1000 void yiwei(char *ch,int a); void add(char *ch1,char *ch2); void rev(char *ch); int main() { char ch1[N],ch2[N],ch3[N],ch4[N]; int i,j,k; while(scanf("%s %s",ch1,ch2) != -1) { rev(ch1);rev(ch2); memset(ch4,sizeof(ch4)); for( i=0; ch1[i]!=0; i++) { memset(ch3,sizeof(ch3)); for( j=0; ch2[j]!=0; j++) //ch3中存的是对应位乘积+1,不加1可能为0了。 { ch3[j] = (ch1[i]-'0')*(ch2[j]-'0')+1; } for( k=0; ch3[k]; k++) { if(ch3[k]-1 > 9) { if(!ch3[k+1]) { ch3[k+1] += (ch3[k]-1)/10+1; ch3[k] = (ch3[k]-1)%10+1; } else { ch3[k+1] += (ch3[k]-1)/10; ch3[k] = (ch3[k]-1)%10+1; } } } k = 0; while(ch3[k]) { ch3[k] = ch3[k]-1+'0'; k++; } yiwei(ch3,i); add(ch4,ch3); } rev(ch4); if(ch4[0]=='0') ch4[1] = 0; printf("%sn",ch4); } return 0; } void yiwei(char *ch,int a) { int len,i; len = strlen(ch); for( i=len+a; i>=a; i--) { ch[i] = ch[i-a]; } for(i=0; i<a; i++) ch[i] = '0'; } void add(char *ch1,char *ch2) { int i = 0; while(ch1[i] || ch2[i]) { if(!ch1[i] || !ch2[i]) ch1[i] = ch1[i]+ch2[i]; else ch1[i] = ch1[i]+ch2[i]-'0'; i++; } i = 0; while(ch1[i]) { if(ch1[i] > '9') { if(!ch1[i+1]) { ch1[i+1] += (ch1[i]-'0')/10+'0'; ch1[i] = '0'+(ch1[i]-'0')%10; } else { ch1[i+1] += (ch1[i]-'0')/10; ch1[i] = '0'+(ch1[i]-'0')%10; } } i++; } } void rev(char *ch) { int len,i; char ch1[N]; len = strlen(ch); for(i=0; i<len; i++) ch1[len-i-1] = ch[i]; for(i=0; i<len; i++) ch[i] = ch1[i]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |