一定要注意!!!
查看原帖
一定要注意!!!
741244
Eason_cyx大愚若智楼主2022/11/1 17:41

请注意,题目给出的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;
}
2022/11/1 17:41
加载中...