
题目链接
题解
标准的递归定义。按照递归定义处理即可。
答案很大,要用int128或者double。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
#define INF 2000000000 using namespace std; typedef __int128 ll; int n; ll ans = 0; void (){ scanf("%d", &n); } void get(ll d){ int p; scanf("%1d", &p); if(p == 0) ans += d * d; else if(p == 2){ for(int i = 0; i < 4; ++i) get(d >> 1); } } void solve(){ ll a = 1; for(int i = 1; i <= n; ++i) a *= 2ll; get(a); int num[50], len = 0; while(ans) num[++len] = ans % 10, ans /= 10; for(int i = len; i >= 1; --i) printf("%d", num[i]); } int main(){ init(); solve(); return 0; }
|
近期评论