题意分析:2^35表示这个二进制数最长有35位... 所以不管用什么整数型都会爆,这时候只能用字符串读入,并将字符串上的每一位转换成int型。
具体方法:int x=a[i]-'0' //a[i]为字符串的第[i]位
输入一个样例出一个答案:
输入全部结束样例后出答案:
#include <bits/stdc++.h>using namespace std;char a[110][110]; //110个字符串,每个字符串长度110int main(){int t;cin>>t;for (int i=0;i<t;i++){scanf("%s",a[i]);}for(int i=0;i<t;i++){int x=0; //x是位权long long ans=0;int len=strlen(a[i]);for (int j=len-1;j>=0;j--){ans+=(a[i][j]-'0')*pow(2,x);//字符串a[i]的第j位转换成int型再乘pow(2,x)x++;}printf("%lld\n",ans);}return 0;}