Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1530917
  • 博文数量: 399
  • 博客积分: 8508
  • 博客等级: 中将
  • 技术积分: 5302
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-14 09:28
个人简介

能力强的人善于解决问题,有智慧的人善于绕过问题。 区别很微妙,小心谨慎做后者。

文章分类

全部博文(399)

文章存档

2018年(3)

2017年(1)

2016年(1)

2015年(69)

2013年(14)

2012年(17)

2011年(12)

2010年(189)

2009年(93)

分类: LINUX

2010-06-03 14:59:02

#include
#include
#include

char result[10000];
int  length;
void output(int pos)
{
 int len = strlen(result);
 char t;
 if(pos { 
  if(!pos) {printf("%s\n",result);return;}
  t = result[len-1-pos];
  result[len-1-pos]='\0';
  printf(result);
  printf("%c.%s",t,result+len-pos);
 }else{
  printf(".");
  for(int i=0;i  printf("0");
  printf(result);
 } 
 printf("\n");
}
void mul(char s1[], int len1, char s2[], int len2)
{
 char *tmp = (char *)malloc(len1+len2);
 memset(tmp,0,len1+len2);
 int len = len1 +len2-1 , i,j,k;
 for(i=len1-1;i>-1;i--)
 for(j=len2-1;j>-1;j--)
 {
   tmp[len-i-j-1] +=(s1[i]-'0')*(s2[j]-'0');
   tmp[len-i-j]+= tmp[len-i-j-1]/10;
   tmp[len-i-j-1]%=10;
 }
 i=len-1;
 if(tmp[len])
  i=len;
 
 for(j=i,k=0;j>-1;j--,k++)
  result[k] = tmp[j]+ '0';
 result[k] = '\0';
}


void cal(char factor[] , int n ,int pos)
{
 int len=strlen(factor);
 for(int i=0;i  mul(result,strlen(result),factor,len);
 output(pos*n);
}

int main()
{
 int  l,m,r,pos,len;
 char a[100];
 char in[100];  
 int  n;    
 while(scanf("%s%d",in,&n)!=EOF)
 {
  memset(a,0,sizeof(a)); 
  len = strlen(in);
  l=m=0;r=len-1;
  while(m  if(m  {

   while(l    l++;
   while(r>-1 && in[r]=='0')  
    r--;
   pos = r-m;
   if(l   {
    strncpy(a,in+l,m - l);
    strncpy(a+m-l,in+m+1,r-m);
   }else {     
    strncpy(a,in+l,r-l+1);
   }
  }else{      
   pos = 0;
   strcpy(a,in);
  }
  strcpy(result,a);
  cal(a,n,pos);
 } 
 return 0;
}

阅读(516) | 评论(0) | 转发(0) |
0

上一篇:netlink 使用

下一篇:1002

给主人留下些什么吧!~~