题意:
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
= 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; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。