1. 最小公约数最大公倍数:
#include
int main()
{
int m,n,q,p;
while(scanf("%d%d",&m,&n)!=EOF){
q=m*n;
while(m%n!=0)
{
p=m%n;
m=n;
n=p;
}
printf("%d %d\n",n,q/n);
}
return 0;
}
2.大数加减:
#include
#include
#define MAX 200
int a1[MAX+10];
int a2[MAX+10];
int a3[MAX+10];
char s1[MAX+10];
char s2[MAX+10];
char s3[MAX+10];
int main(void)
{
scanf("%s", s1);
scanf("%s", s2);
int k=strcmp(s1,s2);
if(k<0)
{
strcpy(s3,s1); strcpy(s1,s2); strcpy(s2,s3);
}
int i,j;
memset(a1, 0, sizeof(a1));
memset(a2, 0, sizeof(a2));
int n1 = strlen( s1);
for(j=0, i=n1-1; i>=0; i--)
a1[j++] = s1[i] - '0';
int n2=strlen(s2);
for(j=0, i=n2-1; i>=0; i--)
a2[j++]=s2[i]-'0';
for(i=0; i
{
a3[i]=a1[i]+a2[i];
if(a3[i]>=10)
{
a3[i]-=10;
a3[i+1]++;
}
}
for(i=MAX; (i>=0)&&(a3[i]==0); i--);
if(i>=0)
for( ;i>=0; i--)
printf("%d",a3[i]);
else printf("0");
printf("\n");
for(i=0; i
{
if(a1[i]
{
a1[i]+=10;
a1[i+1]--;}
a3[i]=a1[i]-a2[i];
}
for(i=MAX; (i>=0)&&(a3[i]==0); i--);
if(i>=0)
{if(k<0) printf("%d",-1*a3[i]);
else printf("%d",a3[i]);
for( ; i>0; i--)
printf("%d",a3[i]);
}
else printf("0");
printf("\n");
return 0;
}
3.大数乘法:
#include
#include
#define MAX 200
int main(void)
{
int n1,n2,i,j;
int a[MAX+10],b[MAX+10],c[MAX*2+10];
char s1[MAX+10],s2[MAX+10];
for(i=0; i
for(i=0; i
gets(s1);
gets(s2);
n1=strlen(s1);
for(j=0,i=n1-1; i>=0; i--)
a[j++]=s1[i]-'0';
n2=strlen(s2);
for(j=0,i=n2-1; i>=0; i--)
b[j++]=s2[i]-'0';
for(i=0; i
{
for(j=0; i
c[i+j]+=b[i]*a[j];
}
for(i=0; i
{
if(c[i]>=10)
{
c[i]%=10;
c[i+1]+=c[i]/10;
}
}
for(i=MAX*2; (i>=0)&&(c[i]==0); i--)
if(i>=0)
for( ; i>=0; i--)
printf("%d",c[i]);
else printf("0");
return 0;
}