这题目数据是不是有问题

P2563 [AHOI2001] 质数和分解

把别人的AC代码复制上去都是错的,我真的是无语
by Bz_QC @ 2023-12-02 22:18:39


@[2023080106Czq](/user/1102411) 我看前两篇题解都没问题,你是指啥
by cff_0102 @ 2023-12-02 22:26:53


@[2023080106Czq](/user/1102411) 你不是错第三个,且报错说你输出的第一个字符是1,而正确的是9吗
by cff_0102 @ 2023-12-02 22:29:03


@[2023080106Czq](/user/1102411) 评测机是字符比较的,他说的0是指数字里面有某一位为0
by _zzzzzzy_ @ 2023-12-02 22:31:40


@[cff_0102](/user/542457) 我复制了几个人的代码,全都是第三个错了,前面8次都是报错为0,后面我什么都几乎没改,把prime数组赋了个初值就莫名其妙的过了,我真是搞不懂
by Bz_QC @ 2023-12-02 22:33:12


@[2023080106Czq](/user/1102411) 你的prime数组定义在主函数内,导致它会被随机赋值,加上评测机也是评测过上亿评测的,不可能在清空一段内存给你(除非你定义在主函数外)
by cff_0102 @ 2023-12-02 22:35:09


@[cff_0102](/user/542457) 应该是的,但我应该试过这种情况,现在去看不知道又为什么没有,可能那次没编译,谢谢解惑!
by Bz_QC @ 2023-12-02 22:41:33


``` #include<bits/stdc++.h> #define kkksc03yyds kkksc03(); using namespace std; const int N = 1e4 + 10, M = 1e7 + 10; long long v[N], dp[M], xxs[N], cnt; bool a[N]; void kkksc03() { for (int i = 2; i <= 200; i++) { if (!a[i]) { v[cnt] = i; cnt++; for (int j = i; j <= 200; j += i) { a[j] = 1; } } } } int main() { kkksc03yyds int n; while (cin >> n) { dp[0] = 1; for (int i = 0; i < cnt; i++) { for (int j = v[i]; j <= n; j++) { dp[j] += dp[j - v[i]]; } } cout << dp[n]<<'\n'; memset(dp,0,sizeof(dp)); } return 0; } ``` [双倍经验](1832)
by xyy_xxyy @ 2024-03-13 19:33:57


|