加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

POJ 1565大数类似二进制求十进制

发布时间:2020-12-14 04:00:23 所属栏目:大数据 来源:网络整理
导读:题意: 10120(skew) = 1 * (2^5-1) + 0 * (2^4-1) + 1 * (2^3-1) + 2 * (2^2-1) + 0 * (2^1-1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 31 + 0 + 7 + 6 + 0? ? ? ??= 44. ? ? ?(令char n[]=10120其中易看出skew=strlen(n)) 思路:按公式求即可。有点求2^n即求2
题意: 10120(skew) = 1 * (2^5-1) + 0 * (2^4-1) + 1 * (2^3-1) + 2 * (2^2-1) + 0 * (2^1-1)?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = 31 + 0 + 7 + 6 + 0?

? ? ??= 44. ? ? ?(令char n[]=10120其中易看出skew=strlen(n))

思路:按公式求即可。有点求2^n即求2的n次方技巧用移位可快速求出,即:2^n=2<<(n-1)

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    char n[35];
    while(cin>>n&&strcmp(n,"0")!=0)
    {
        int i,l,m,sum=0;
        l=m=strlen(n);
        for(i=0;i<l;i++)
        {
            sum+=((2<<(m-1))-1)*(n[i]-'0');
            m--;
        }
        cout<<sum<<endl;
    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读