栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 2116 Death to Binary?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 2116 Death to Binary?

#include<iostream>#include<iomanip>#include<string>using namespace std;int main(){  double f[50]={1,2},sum1,sum2,sum;  int s1[40],s2[40],s3[40],n;  string a,b;  char *a1,*a2,*a3;  for(int i=2;i<50;i++)      f[i]=f[i-1]+f[i-2];  while(cin>>a>>b)  {      int t1=0,t2=0;      for(int i=0;i<a.size();i++)          if(a[i]!='0'){t1=i;break;}      for(int i=0;i<b.size();i++)          if(b[i]!='0'){t2=i;break;}      sum1=sum2=sum=0;      memset(s1,-1,sizeof(s1));      memset(s2,-1,sizeof(s2));      memset(s3,-1,sizeof(s3));      for(int i=a.size()-1,j=0;i>=0;i--,j++)          if(a[i]=='1')sum1+=f[j];      for(int i=b.size()-1,j=0;i>=0;i--,j++)          if(b[i]=='1')sum2+=f[j];      sum=sum1+sum2;      n=0;      while(sum1>0)      {          int i=0;          while(sum1>=f[i])   i++;          s1[n++]=--i;          sum1-=f[i];      }      n=0;      while(sum2>0)      {          int i=0;          while(sum2>=f[i])   i++;          s2[n++]=--i;          sum2-=f[i];      }      n=0;      while(sum>0)      {          int i=0;          while(sum>=f[i])   i++;          s3[n++]=--i;          sum-=f[i];      }      a1=new char[s1[0]+2];      a2=new char[s2[0]+2];      a3=new char[s3[0]+2];      memset(a1,'0',(s1[0]+2)*sizeof(char));      memset(a2,'0',(s2[0]+2)*sizeof(char));      memset(a3,'0',(s3[0]+2)*sizeof(char));      a1[s1[0]+1]=a2[s2[0]+1]=a3[s3[0]+1]='';      for(int i=0;s1[i]!=-1;i++)          a1[s1[0]-s1[i]]='1';      for(int i=0;s2[i]!=-1;i++)          a2[s2[0]-s2[i]]='1';      for(int i=0;s3[i]!=-1;i++)          a3[s3[0]-s3[i]]='1';      if(a[t1]=='0'&&b[t2]!='0')      {          cout<<setw(s3[0]+3)<<0<<endl   <<"+"<<setw(s3[0]+2)<<a2<<endl   <<"  ";          for(int i=0;i<s3[0]+1;i++)   cout<<"-";          cout<<endl<<setw(s3[0]+3)<<a3<<endl<<endl;      }      else if(a[t1]!='0'&&b[t2]=='0')      {          cout<<setw(s3[0]+3)<<a1<<endl   <<"+"<<setw(s3[0]+2)<<0<<endl   <<"  ";          for(int i=0;i<s3[0]+1;i++)   cout<<"-";          cout<<endl<<setw(s3[0]+3)<<a3<<endl<<endl;      }      else if(a[t1]=='0'&&b[t2]=='0')      {          cout<<setw(3)<<0<<endl   <<"+"<<setw(2)<<0<<endl   <<"  -"<<endl<<setw(3)<<0<<endl<<endl;      }      else      {          cout<<setw(s3[0]+3)<<a1<<endl   <<"+"<<setw(s3[0]+2)<<a2<<endl   <<"  ";          for(int i=0;i<s3[0]+1;i++)   cout<<"-";          cout<<endl<<setw(s3[0]+3)<<a3<<endl<<endl;      }      delete []a1;      delete []a2;      delete []a3;  }  return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/367571.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号