gpt4 book ai didi

c++ - 如何消除挑战 'Sam and sub-strings' 中与模数相关的错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:15:06 25 4
gpt4 key购买 nike

我正在做一个名为 Sam and sub-strings 的问题在 hackerrank 上,您可以通过单击相应的链接来查看。

这是我的代码。我确信我的程序逻辑是正确的,因为它适用于较小的值(以及示例测试用例)。问题出在模数上,我无法了解如何在此程序中正确使用模数。谁能帮我(如果可能的话,请告诉我何时/何地在程序中使用模数而不编辑我程序的其余部分)?我提交的测试用例 0、1、2、3、12 给出了正确的结果,而其余的给出了错误的结果。

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
long long int n;
cin >> n;

vector<long long int> v1;
while (n!=0){
v1.push_back(n%10);
n=n/10;
}

long long int x=1,s1=0,sum=0;
for (long long int i=v1.size()-1;i>=0;i--){
s1+=x*v1[i];
x++;
sum=(sum+(s1*(long long int)pow(10,i))%1000000007)%1000000007;
}

cout << sum << endl;
return 0;
}

最佳答案

我建议您在玩数字时将数字视为文本。

int main()
{
std::string number_as_text;
std::cin >> number_as_text;

long long sum = 0;
const std::string::size_type length = number_as_text.length();
for (unsigned int index = 0; index < length; ++index)
{
long long s1 = (number_as_text[index] - '0') * (index + 1);
sum = sum * 10 + s1;
}
return 0;
}

如果需要,您必须弄清楚将mod 1000000007 放在程序中的什么位置。

此外,我建议在代码中放置错误处理,尤其是在读取数字时。函数 std::isdigit 看起来很有帮助。

关于c++ - 如何消除挑战 'Sam and sub-strings' 中与模数相关的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42235189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com