请注意,题目给出的100%数据范围是十的十八次方,所以,请将所有变量,包括数组类型,开成long long类型。不然,就会出现以下情况: https://www.luogu.com.cn/record/92460115 代码见下:
#include <iostream>
using namespace std;
int a[100000010];
int main()
{
int n;
cin >> n;
int cur = 0;
while(n > 0)
{
a[++cur] = n;
n /= 2;
}
for(int i = 1;i <= cur;i++)
{
cout << a[i] << ' ';
}
cout << endl;
return 0;
}
但是注意一个坑点:
即便你将所有变量开成long long,但第3行有这么一句:
int a[100000010];
那就完了。不管你将数组范围开得多大,都没用。解决方法就是将数组类型改成long long。 附:AC代码如下:
#include <iostream>
using namespace std;
long long a[100000010];
int main()
{
long long n;
cin >> n;
long long cur = 0;
while(n > 0)
{
a[++cur] = n;
n /= 2;
}
for(long long i = 1;i <= cur;i++)
{
cout << a[i] << ' ';
}
cout << endl;
return 0;
}