写到是可以写,但是万一被选上出题,而我有没什么时间,就不好办了.
我也想看一下高手是怎么写的.
你要有事情,我选别人就可以了
出题目真的没有什么意思,就象我们老师一样,一个人在讲台上讲的津津有味,
[此贴子已经被作者于2007-4-14 22:26:22编辑过]

这个地方看不大懂,你能不能说一下
NUMBER *multiply(NUMBER *opn1, NUMBER *opn2)
{
    int n = opn1->length;
    unsigned long *u = opn1->data;
    int m = opn2->length;
    unsigned long *v = opn2->data;
    int mn = m + n;
    unsigned long carry, temp;
    int i, j;
    unsigned long w[N];
memset(w, 0, sizeof(w));
    for (i = 0; i < n; i++)
        if (u[i] != 0)
        {
            for (carry = 0, j = 0; j < m; j++)/u,和v都是定义为指针这里怎么可以用做数组
            {
                temp = u[i]*v[j] + w[i+j] +carry;/接下来几个表达式子不明白
                w[i+j] = temp % BASE;
                carry = temp / BASE;
            }
            w[i+j] = carry;
        }
    for (; w[mn-1] == 0; mn--)
         ;
    memset (opn1->data, 0, N*sizeof(unsigned long));
    opn1->length = mn;
    memmove(opn1->data, w, mn*sizeof(unsigned long));
    return opn1;
}

大家参考一下
第一个题目
#include <stdio.h>
int main()
{
    unsigned long   x,y,m,n,l;
    while (scanf ("%ld %ld %ld %ld %ld",&x,&y,&m,&n,&l)!=EOF)
    {
          if (m>n)
          {
                  m=m-n;
                  x=(y-x+l)%l;
          }
          else
          {
                 m=n-m;
                 x=(x-y+l)%l;
          }
          n=x/m;
          x=x%m;
          y=x;
          while (1)
          {
              if (y==0)
              {
                  printf ("%d\n",n);
                  break;
              }
              n+=(y+l)/m;
              y=(y+l)%m;
              if (y==x)
              {
                  printf ("Impossible\n");
                  break;
              }
          }
    }
    return 0;
}

第二个
#include<stdio.h>
void main()
{
 char s[7];
 int i,j,n,m,k,flag;
 long int a[100]={0};
 char st[395]={'0'};
 a[0]=1;
 while(scanf("%s %d",s,&n)!=EOF)
 {
  for(i=0;i<100;i++)
   a[i]=0;
  for(i=0;i<396;i++)
   st[i]='\0';
  st[0]='0';
  a[0]=1;
  m=0;
  j=1;
  flag=-1;
  for(i=0;s[i];i++);
  k=i-1;
  for(i--;i>=0;i--)
  {
   if(s[i]=='.')
   {
    flag=(k-i)*n;
    continue;
   }
   else
   {
    m+=(s[i]-'0')*j;
    j*=10;
   }
  }
  while(n--)
  {
   for(i=0;i<100;i++)
    a[i]*=m;
   for(i=0;i<100;i++)
   {
    a[i+1]=a[i+1]+(a[i]/10000);
    a[i]=a[i]%10000;
   }
  }
  for(i=0,k=0;i<99;i++,k+=4)
  {
   st[k+3]=a[i]/1000+'0';
   a[i]%=1000;
   st[k+2]=a[i]/100+'0';
   a[i]%=100;
   st[k+1]=a[i]/10+'0';
   a[i]%=10;
   st[k]=a[i]+'0';
  }
  for(i=395;i>=flag;i--)
  {
   if(st[i]!='0')
    break;
  }
  for(j=0;j<flag;j++)
  {
   if(st[j]!='0')
    break;
  }
  if(i<j)
   printf("0\n");
  else
  {
   for(i;i>=j;i--)
   {
    if(i==flag-1)
     printf(".");
    printf("%c",st[i]);
   }
   printf("\n");
  }
 }
}
