Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
12个月前关闭。
Improve this question
测试用例
39915186055525904358
90102 63169402
除上述一种以外,其他测试用例都可以正常工作。直到第7行编码正常为止。但是在输入“b”代码时会被转储。
https://codeforces.com/contest/490/my。最后提交。我在第19个测试用例上遇到运行时错误。
然后在
您尝试访问的索引为负,这会导致分段错误。
这也是一个无休止的循环,因为您从不修改
如果“Testcase”仅是前缀,而实际测试数据仅是“39915186055525904358 90102 63169402”,则
想改善这个问题吗?添加详细信息,并通过editing this post阐明问题。
12个月前关闭。
Improve this question
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin >> s;
long long a;
long long b;
cin >> a;
cin >> b;
long long n = s.length();
long long y = 1;
while (s[n - a] - 48 == 0)
y++;
vector<long long> v;
long long c = 0;
for (long long i = 0; i < n - y; i++) {
long long x = s[i] - 48;
if (c < a) {
c = c * 10;
c += x;
}
c = c % a;
if (c == 0 && s[i + 1] != '0') {
v.push_back(i);
}
}
cout << v[0] << endl;
for (long long j = 0; j < v.size(); j++) {
c = 0;
for (long long i = v[j] + 1; i < n; i++) {
long long x = s[i] - 48;
if (c < b) {
c = c * 10;
c += x;
}
c = c % b;
}
if (c == 0) {
cout << "YES" << endl;
cout << s.substr(0, v[j] + 1) << endl
<< s.substr(v[j] + 1, n - v[j] - 1);
return 0;
}
}
cout << "NO";
}
39915186055525904358
90102 63169402
除上述一种以外,其他测试用例都可以正常工作。直到第7行编码正常为止。但是在输入“b”代码时会被转储。
https://codeforces.com/contest/490/my。最后提交。我在第19个测试用例上遇到运行时错误。
最佳答案
假设“Testcase 39915186055525904358 90102 63169402”是失败的输入,您将获得以下情形:
cin >> s; // reads "Testcase"
cin >> a; // reads 39915186055525904358
cin >> b; // reads 90102
然后在
while (s[n - a] - 48 == 0) y++;
您尝试访问的索引为负,这会导致分段错误。
这也是一个无休止的循环,因为您从不修改
s
,n
或a
。如果“Testcase”仅是前缀,而实际测试数据仅是“39915186055525904358 90102 63169402”,则
s
是“39915186055525904358”,并且a
将是90102
,仍然比s
的长度还多。08-04 00:21