| Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 149201 | c13 | 二进制小数转十进制 | C++ | Accepted | 0 MS | 268 KB | 751 | 2026-03-07 19:31:20 |
#include<bits/stdc++.h> using namespace std; string s; double sum;int p; void xjz(int o,double i){ if(o==s.size())return; sum+=(s[s.size()-o+p+1]-'0')*i; xjz(o+1,i/2.0); } void jz(int o,int i){ if(o==s.size())return; if(s[o]=='.'){xjz(o+1,0.5);return;} sum+=(s[p-o]-'0')*i; jz(o+1,i*2); } int main(){ cin>>s; for(int i=0;i<s.size();i++)if(s[i]=='.'){p=i-1;break;} //jz(0,1); double po=1; for(int k=p;k>=0;k--){sum+=(po*(s[k]-'0')); po*=2; }po=0.5; for(int k=p+2;k<s.size();k++){ sum+=(po*(s[k]-'0')); po/=2; } /*int l=s.size(); for(int i=0,j=l-1;i<l&&i>=0;i++,j--)sum+=(s[j]-'0')*pow(2,i);*/ cout<<sum<<"\n"; return 0; }