登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

being23

写给未来的自己

 
 
 
 
 

日志

 
 
关于我

真正的坚定,就是找到力量去做自己喜欢的事情,并为之努力,这样才会觉得生活是幸福的。

那年的梦想1001  

2010-05-10 00:47:14|  分类: Tech |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 如风——王菲 来自SongTaste

那年的梦想1001,努力中……


tell me why

#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
 char base[6];
 int exp;
 char pro[1000];
 char temp[1000];
 while(scanf("%s %d",base,&exp)!=EOF)
 {
  if(exp == 0)
  {
   printf("1\n");
   continue;
  }

  int lenbase = strlen(base);
  int i = 0;
  int j = lenbase - 1;
  int k = 0;
  int pt = lenbase;
  int left = 0;
  int right = 0;

  for(i=0; i<=j; i++)
  {
   if(base[i] == '.')
   {
    pt = i;
    break;
   }
  }

  for(i=0; i<pt; i++)
   left = left + (base[i] - 48);

  for(i=pt+1; i<lenbase; i++)
   right = right + (base[i] - 48);
  
  if((left == 0) && (right == 0))
  {
   printf("0\n");
   continue;
  }
  if((left != 0) && (right == 0))
  {
   i = 0;
   while(base[i] == '0')
    i++;
   while(i < pt)
   {
    base[k] = base[i];
    i++;
    k++;
   }
   pt = 0;
   base[k] = '\0';
  }
 
  if((right != 0) && (left == 0))
  {
   i = pt + 1;
   while(base[i] == '0')
    i++;
   while(base[j] == '0')
    j--;

   pt = (j - pt)*exp;

   while(i<=j)
   {
    base[k] = base[i];
    i++;
    k++;
   }
   base[k] = '\0';
  }

  if((right !=0) && (left != 0))
  {
   i = 0;
   while(base[i] == '0')
    i++;
   while(base[j] == '0')
    j--;

   pt = (j - pt)*exp;

   while(i<=j)
   {
    if(base[i] == '.')
     i++;    
    base[k] = base[i];
    i++;
    k++;
   }
   base[k] = '\0';
  }


  
  for(i=0; i<(int)((k+1)/2); i++)
  {
   j = base[i];
   base[i] = base[k-1-i];
   base[k-1-i] = j;
  }


  for(i=0; i<k; i++)
   pro[i] = base[i];
  pro[i] = '\0';

  int sum = 0;
  int mod = 0;
  int car = 0;

  int lenb = k-1;
  int lena = k-1;
  
  int count = 1;
  while(count < exp)
  {
   int len = lena + lenb;
   
   for(i=0; i<=len; i++)
   {
    j=0;
    if(i > lena)
     j = i - lena;
    sum = 0;
    while((i-j) >= 0 && j <= lenb)
    {
     sum = sum + (base[j]- 48)*(pro[i-j] - 48);
     j++;
    }
    sum = sum + car;
    mod = sum%10;
    car = sum/10;
    temp[i] = mod + 48;
   }
   lena = lena + lenb;
   if(car > 0)
   {
    temp[i] = car + 48;
    lena = lena +1;
   }
   car = 0;
   for(i=0; i<=lena; i++)
    pro[i] = temp[i];
   pro[i] = '\0';
   temp[0] = '\0';
   count++;
  }

  if(pt == 0)
  {
   for(i=lena; i>=0; i--)
    printf("%c", pro[i]);
   printf("\n");
  }
  else if(lena >= pt)
  {
   for(i=lena; i>=pt; i--)
    printf("%c", pro[i]);
   printf("%c", '.');
   for(i=pt-1; i>=0; i--)
    printf("%c", pro[i]);
   printf("\n");
  }
  else
  {
   int diff = pt - lena;
   printf(".");
   for(i=1; i<diff; i++)
    printf("0");
   for(i=lena; i>=0; i--)
    printf("%c", pro[i]);
   printf("\n");

  }
 
 }  
 return 0;
}

  评论这张
 
阅读(210)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018