题解 UVA575 【Skew Binary】

一道UVA,我发现UVA在洛谷不太火爆,于是来水一篇

这道题目,我们可以用简单的字符串模拟来做,实在是“太水了”,QAQ。关键就是要把题目读懂!

按照题目意思,就是一道“位值问题”,每一位上的值都有不同的比重。每一位上的比重,就是数值*(2^位置-1)。

那么,考虑公式,简单易懂的小段代码

int t=(int)(s[i]-'0');
int w=len-i;
sum+=t*(pow(2,w)-1);
View Code

有没有问题?!

那么如果没有问题,我们就解决了问题的核心。

上代码!!!

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        if(s=="0")
        {
            break;
        }
        int len;
        len=s.size();
        int i;
        int sum=0;
        for(i=0;i<len;i++)
        {
            if(s[i]!='0')
            {
                int t=(int)(s[i]-'0');
                int w=len-i;
                sum+=t*(pow(2,w)-1);
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}
View Code

(题目太水,实在没什么可说的……QAQ)

posted @ 2020-08-08 15:12  Bushuai_Tang  阅读(63)  评论(0编辑  收藏  举报