HzuWHF


私信TA

用户名:I7I08I9047

访问量:83377

签 名:

我RUN了

等  级
排  名 19
经  验 21269
参赛次数 13
文章发表 127
年  龄 3
在职情况 学生
学  校 贺州学院
专  业

  自我简介:

解题思路:

        原来的公式是 2^n - 1,双塔就是双倍,2^( n+1 ) - 2。数据大需要高精度。

参考代码:

#include<bits/stdc++.h>
using namespace std;

int ans[28];

int main() {
	int num; cin >> num; num++;
	ans[1] = 1;
	
	for (int i = 1; i <= num; i++) {
		int tmp = 0;
		for (int pos = 1; pos < 28; pos++) {
			tmp += ans[pos] * 2;
			ans[pos] = tmp % 10000;
			tmp /= 10000;
		}
	}
	ans[1] -= 2;
	
	int index = 27;
	while (index >= 0 && ans[index] == 0)
		index--;
	printf("%d", ans[index--]);
	
	for (int i = index; i >= 1; i--)
		printf("%04d", ans[i]);
}


 

0.0分

15 人评分

  评论区

可以把pos优化一下每次都时数组的长度
2020-11-09 10:14:33
相当于是10000进制,充分利用了int
2018-10-27 23:52:57
这个答案好简洁……真的太强了……
2018-10-27 22:40:55
  • «
  • 1
  • »