大数相乘
发布时间:2020-12-14 02:41:28 所属栏目:大数据 来源:网络整理
导读:span style="font-size:18px;"#include stdlib.h#include stdio.h#include string.hint main(){ int i,j; char num1[100]={0}; char num2[100]={0}; gets(num1); gets(num2); int number1[100]; int number2[100]; int result[201]={0}; for(i=0;istrlen(num
<span style="font-size:18px;">#include <stdlib.h> #include <stdio.h> #include <string.h> int main() { int i,j; char num1[100]={0}; char num2[100]={0}; gets(num1); gets(num2); int number1[100]; int number2[100]; int result[201]={0}; for(i=0;i<strlen(num1)/2;i++) { char tmp = num1[i]; num1[i] = num1[strlen(num1)-1-i]; num1[strlen(num1)-1-i] = tmp; } for(i=0;i<strlen(num2)/2;i++) { char tmp = num2[i]; num2[i] = num2[strlen(num2)-1-i]; num2[strlen(num2)-1-i] = tmp; } for(i=0;i<strlen(num1);i++) { number1[i]=num1[i]-'0'; } for(i=0;i<strlen(num2);i++) { number2[i]=num2[i]-'0'; } for(i=0;i<strlen(num1);i++) { for(j=0;j<strlen(num2);j++) { result[i+j] = result[i+j] + number1[i]*number2[j]; } } for(i=0;i<200;i++) { result[i+1]=result[i+1]+result[i]/10; result[i] = result[i]%10; } for(i=200;i>-1;i--) { if(result[i]>0) break; } if(i==-1) { printf("n%d",0); } for(j=i;j>-1;j--) { printf("%d",result[j]); } return 0; }</span> <span style="font-size:18px;"> </span><span style="font-size:32px;color:#cc0000;">求算n!</span><span style="font-size:18px;"> #include<iostream> #define MAX 1000 using namespace std; int main(void) { int n; while(scanf("%d",&n)==1&&n>=0) { int i,j; int a[MAX]; //存数运算结果 int p,h; //p存储当前结果的位数,h为进位 a[1]=1; p=1; for(i=2;i<=n;i++) //循环与2,3,4.....n相乘 { for(j=1,h=0;j<=p;j++) //让a[]的每位与i相乘 { a[j]=a[j]*i+h; h=a[j]/10; a[j]=a[j]%10; } while(h>0) //如果h不为0 { a[j]=h%10; h=h/10; j++; } p=j-1; //将当前的位数赋给p } for(i=p;i>=2;i--) { printf("%d",a[i]); } printf("%dn",a[i]); } return 0; } </span> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |