随笔-68  评论-10  文章-0  trackbacks-0
#include<iostream>
#include
<string>
#include
<stack>
using namespace std;

string DecToBinary(const string &dec)
{
    
int i,len,sta;
    stack
<int> s;
    
    len
=dec.length();
    
int *num=new int[len+1];
    
    
for(i=0;i<len;++i)
    
{
         num[i]
=dec[i]-'0';
    }

    
    
while(true)
    
{
         sta
=len;
         
for(i=0;i<len;++i)
         
{
              
if(num[i]!=0)
              
{
                   sta
=i;
                   
break;
              }

         }

         
         
if(sta==len) break;
         
         
int remain=0;
         
for(i=sta;i<len;++i)
         
{
              remain
=remain*10+num[i];
              num[i]
=remain/2;
              remain
=remain%2;    
         }
  
         s.push(remain);
    }

    
    
string ans;
    
while(!s.empty())
    
{
        ans
+=s.top()+'0';
        s.pop(); 
    }

    
if(ans.length()==0)
    ans
="0";
    
    delete [] num;
    
return ans;
}


int main()
{
    
string dec,bin;
    
while(cin>>dec)
    
{
         bin
=DecToBinary(dec);
         cout
<<bin<<endl;
    }

    
return 0;
}

posted on 2011-07-31 15:37 wuxu 阅读(842) 评论(0)  编辑 收藏 引用 所属分类: 高精度

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理