level 12
蒜头青蛙🌰
楼主
关于大数相除谁有什么好的想法啊?![[睡觉]](/static/emoticons/u7761u89c9.png)
#include <stdio.h>
#include <string.h>
int *tonumber(char x[],int ans[],int len);
int main()
{
char x[100];
char y[100];
int ans1[100]={0};
int ans2[100]={0};
int answer[100]={0};
gets(x);
gets(y);
int i,j;
int a=strlen(x);
int b=strlen(y);
int maxlen=a>b?a:b;
int *p=tonumber(x,ans1,a);
int *q=tonumber(y,ans2,b);
int cnt1[100]={0};
for(i=0;i<maxlen;i++){
answer[i]=*(p+i)+*(q+i)+cnt1[i];
if(answer[i]>9){
answer[i]-=10;
cnt1[i+1]++;
}
}
printf("和为\n");
if(cnt1[i]>0){
printf("%d",cnt1[i]);
}
for(i=maxlen-1;i>=0;i--){
printf("%d",answer[i]);
}
printf("\n差为\n");
int cnt2[100]={0};
for(i=0;i<maxlen;i++){
answer[i]=*(p+i)-*(q+i)+cnt2[i];
if(answer[i]<0){
answer[i]+=10;
cnt2[i+1]--;
}
}
int cnt3[100]={0};
if(cnt2[i]==0){
for(i=maxlen-1;i>=0;i--){
printf("%d",answer[i]);
}
}else{
for(i=0;i<maxlen;i++){
answer[i]=*(q+i)-*(p+i)+cnt3[i];
if(answer[i]<0){
answer[i]+=10;
cnt3[i+1]--;
}
}
printf("-");
for(i=maxlen-1;i>=0;i--){
printf("%d",answer[i]);
}
}
printf("\n积为:\n");
int cnt4[100]={0};
for(i=0;i<a;i++){
for(j=0;j<b;j++){
cnt4[i+j]+=ans1[i]*ans2[j];
}
}
for(i=0;i<a+b;i++){
if(cnt4[i]>9){
cnt4[i-1]+=cnt4[i]/10;
cnt4[i]%=10;
}
}
for(i=a+b-2;i>=0;i--){
printf("%d",cnt4[i]);
}
getch();
return 0;
}
int *tonumber(char x[],int ans[],int len)
{
int i;
for(i=0;i<len;i++){
ans[i]=x[len-i-1]-'0';
}
return ans;
}
2015年08月16日 07点08分
1
#include <stdio.h>
#include <string.h>
int *tonumber(char x[],int ans[],int len);
int main()
{
char x[100];
char y[100];
int ans1[100]={0};
int ans2[100]={0};
int answer[100]={0};
gets(x);
gets(y);
int i,j;
int a=strlen(x);
int b=strlen(y);
int maxlen=a>b?a:b;
int *p=tonumber(x,ans1,a);
int *q=tonumber(y,ans2,b);
int cnt1[100]={0};
for(i=0;i<maxlen;i++){
answer[i]=*(p+i)+*(q+i)+cnt1[i];
if(answer[i]>9){
answer[i]-=10;
cnt1[i+1]++;
}
}
printf("和为\n");
if(cnt1[i]>0){
printf("%d",cnt1[i]);
}
for(i=maxlen-1;i>=0;i--){
printf("%d",answer[i]);
}
printf("\n差为\n");
int cnt2[100]={0};
for(i=0;i<maxlen;i++){
answer[i]=*(p+i)-*(q+i)+cnt2[i];
if(answer[i]<0){
answer[i]+=10;
cnt2[i+1]--;
}
}
int cnt3[100]={0};
if(cnt2[i]==0){
for(i=maxlen-1;i>=0;i--){
printf("%d",answer[i]);
}
}else{
for(i=0;i<maxlen;i++){
answer[i]=*(q+i)-*(p+i)+cnt3[i];
if(answer[i]<0){
answer[i]+=10;
cnt3[i+1]--;
}
}
printf("-");
for(i=maxlen-1;i>=0;i--){
printf("%d",answer[i]);
}
}
printf("\n积为:\n");
int cnt4[100]={0};
for(i=0;i<a;i++){
for(j=0;j<b;j++){
cnt4[i+j]+=ans1[i]*ans2[j];
}
}
for(i=0;i<a+b;i++){
if(cnt4[i]>9){
cnt4[i-1]+=cnt4[i]/10;
cnt4[i]%=10;
}
}
for(i=a+b-2;i>=0;i--){
printf("%d",cnt4[i]);
}
getch();
return 0;
}
int *tonumber(char x[],int ans[],int len)
{
int i;
for(i=0;i<len;i++){
ans[i]=x[len-i-1]-'0';
}
return ans;
}

