Run ID | 作者 | 问题 | 语言 | 测评结果 | Time | Memory | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
110556 | 程余天皓 | 二进制小数转十进制 | C++ | Accepted | 1 MS | 280 KB | 621 | 2025-02-22 11:59:37 |
#include<bits/stdc++.h> using namespace std; string s; int xsd=-1; int a[64]; int main() { cin >> s; int n=s.size(); for(int i=0;i<n;i++){ if(s[i]=='.'){ xsd=i; break; } } int j=0; if(xsd==-1){ for(int i=n-1;i>=0;i--){ a[j]=s[i]-48; j++; } int ans=0; for(int i=0;i<n;i++){ ans+=pow(2,i)*a[i]; } cout<<ans; }else{ for(int i=xsd-1;i>=0;i--){ a[j]=s[i]-48; j++; } double ans=0; for(int i=0;i<xsd;i++){ ans+=pow(2,i)*a[i]; } for(int i=xsd+1;i<n;i++){ ans+=pow(2,-(i-xsd))*(s[i]-48); } cout<<ans; } return 0; }