社区讨论

蒟蒻求助(悬关)

P1009[NOIP 1998 普及组] 阶乘之和参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lyqzmg82
此快照首次捕获于
2024/07/18 16:06
2 年前
此快照最后确认于
2024/07/18 16:43
2 年前
查看原帖
WA代码:
CPP
#include<iostream>
#include<cstdio>
using namespace std;
string funa(string num)
{
    int a[10005], c[10005];
    int len = num.length();
    for (int i = len - 1;i >= 0;i--)
        a[len - i] = num[i] - '0';
    for (int i = 1;i <= len;i++)
        for (int j = 1;j <= len;j++)
            c[i + j - 1] += a[i] * a[j];
    len *= 2;
    for (int i = 1;i <= len;i++)
    {
        c[i + 1] += c[i] / 10;
        c[i] %= 10;
    }
    while (c[len] == 0)
        len--;
    string ans;
    for (int i = max(1,len);i >= 1;i--)
        ans += c[i];
    return ans;
}
string funb(string A,string B)
{
    int a[10005], b[10005], c[10005];
    int len = max(A.length(), B.length());
    for (int i = A.length() - 1, j = 1; i >= 0; i--, j++)
        a[j] = A[i] - '0';
    for (int i = B.length() - 1, j = 1; i >= 0; i--, j++)
        b[j] = B[i] - '0';
    for (int i = 1; i <= len; i++) {
        c[i] += a[i] + b[i];
        c[i + 1] = c[i] / 10;
        c[i] %= 10;
    }
    if (c[len + 1])
        len++;
    string ans;
    for (int i = len; i >= 1; i--)
        ans += c[i];
    return ans;
}
int main() {
    int n;
    cin >> n;
    string ans;
    for (int i = 1;i <= n;i++)
    {
        ans = funb(ans,funa(to_string(i)));
    }
    cout << ans << endl;
    return 0;
}
求大神带进题目运行一下,有ASCII码的问题,可能还有其他算法问题,请神犇们一起帮忙看一下,不用附代码,只需要问题和解决方法,代码我自己调就行,谢谢!
悬关

回复

2 条回复,欢迎继续交流。

正在加载回复...