我嘞个TLE
2024-09-17 22:04:02
发布于:上海
14阅读
0回复
0点赞
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
string add(string m,string n)
{
string ans;
int ml = m.size(),nl = n.size();
int num1[1000001],numsum[1000001],num2[1000002];
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2));
memset(numsum,0,sizeof(numsum));
while(m[ml] == '0' && ml > 1) ml--;
while(n[nl] == '0' && nl > 1) nl--;
for(int i = 1; i <= ml; i++)num1[i] = m[ml - i] - '0';
for(int i = 1; i <= nl; i++)num2[i] = n[nl - i] - '0';
int maxlen = max(nl,ml)+ 1;
for(int i = 1; i <= maxlen; i++)
{
numsum[i] += num2[i] + num1[i];
numsum[i + 1] += numsum[i] / 10;
numsum[i] %= 10;
}
if(numsum[maxlen] == 0) maxlen--;
for(int i = maxlen; i >= 1; i--) ans += numsum[i] + '0';
return ans;
}
int main()
{
int _;
cin >> _;
string s[5001] = {"1","1"};
for(int i= 2; i <= _; i++)
{
s[i] = add(s[i - 1],s[i - 2]);
}
cout << s[_];
}
全部评论 2
具体看我提交记录。
2024-09-18 来自 加拿大
0数组开在局部变量的话,赋值为 0 不要用 memset。不然会 TLE。
直接 int a[105] = {}; 默认将数组赋值为 0.2024-09-18 来自 加拿大
0
有帮助,赞一个