为什么前缀和做是50pts啊 /kk
查看原帖
为什么前缀和做是50pts啊 /kk
204619
wwhOvO楼主2020/11/8 20:14

我炸了,一年不如一年 /dk

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

typedef long long ll;

int n;
ll pre[105];

void getPre()
{
	for (int i = 1; i <= 30; i++)
	{
		ll s = (ll)(pow(2, i));
		pre[i] = pre[i - 1] + s;
	}
}

int main()
{
	cin >> n;
	getPre();
	for (int i = 1; i <= 30; i++)
		for (int j = i; j <= 30; j++)
			if (pre[j] - pre[i - 1] == n)
			{
				for (int k = j; k >= i; k--)
					cout << (ll)(pow(2, k)) << " ";
				puts("");
				return 0;
			}
	puts("-1");
	return 0;
}
2020/11/8 20:14
加载中...