这份代码为什么超内存#include<bits/stdc++.h> using namespace std; #define ll long long ll ans[11][10]; void chushi() { for (int i = 1; i < 11; ++i) { ans[i][0] = ans[i - 1][9]; for (int j = 1; j <= 9; ++j) ans[i][j] = pow(10, i - 1) * j + ans[i][j - 1] +ans[i][0]; } } ll sol(int n) { vector <int> v; ll x = n; while (n) { v.push_back(x % 10), x /= 10; } ll res = 0; for (int i = v.size() - 1; i >= 0; --i) { int t = v[i]; if (!t) { continue; } res += ans[i + 1][t - 1] + (x % int(pow(10, i)) + 1) * t; } return res; } int main( ) { ll n; cin >> n; chushi(); cout << sol(n); return 0; }
时间: 2024-04-09 17:29:31 浏览: 58
这段代码超内存的原因是在chushi()函数中,使用了一个二维数组ans[11][10],其中第一维大小为11,第二维大小为10。这样的数组会占用较多的内存空间,导致超出了内存限制。
如果你只需要使用ans数组的部分元素,你可以考虑将其改为动态数组或使用vector容器来代替。这样可以减少内存的占用。
另外,还有一点需要注意的是,在sol()函数中,计算res的过程中使用了一个未定义的变量x。你应该将x改为n来保证正确性。
相关问题
#include <bits/stdc++.h> using namespace std
这段代码是一个C++的头文件引用和命名空间的使用示例。具体来说,`#include <bits/stdc++.h>`是一个常用的头文件引用方式,它包含了C++标准库中的所有头文件。而`using namespace std`则是为了使用`std`命名空间中的标准库函数和对象,这样就可以直接使用`cout`、`cin`等标准输入输出流对象,而不需要写`std::cout`、`std::cin`。
这种写法虽然方便,但也存在一些问题。首先,包含了所有的标准库头文件可能会导致编译时间变长。其次,使用了`using namespace std`会将整个`std`命名空间中的所有标识符引入当前作用域,可能会导致命名冲突。因此,在实际开发中,建议根据需要只包含需要的头文件,并使用具体的命名空间来避免潜在的问题。
#include <bits/stdc++.h> using namespace std;
这个头文件是C++11标准引入的,它包含了所有标准库中的头文件。使用这个头文件可以方便地在一个地方包含所有需要的头文件,而不需要一个一个地包含。这个头文件通常只在竞赛中使用,因为它不是标准C++头文件,不保证在所有编译器中都能正常工作。
以下是一个使用这个头文件的示例,实现输入4个整数a、b、c、d,将它们倒序输出:
```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, d;
cin >> a >> b >> c >> d;
cout << d << ' ' << c << ' ' << b << ' ' << a << endl;
return 0;
}
```
阅读全文