首页 > 后端开发 > C++ > 正文

将以下内容翻译为中文:C++ 将一个数分成两个可被整除的部分

PHPz
发布: 2023-08-30 17:33:03
转载
971 人浏览过

将以下内容翻译为中文:C++ 将一个数分成两个可被整除的部分

在这个问题中,我们得到了一个可以解释为数字的字符串。现在我们必须将该字符串划分为两部分,使得第一部分可被 A 整除,第二部分可被 B 整除(给我们的两个整数)。例如 -

Input : str = "123", a = 12, b = 3
Output : YES
12 3
"12" is divisible by a and "3" is
divisible by b.

Input : str = "1200", a = 4, b = 3
Output : YES
12 00

Input : str = "125", a = 12, b = 3
Output : NO
登录后复制

现在,在这个问题中,我们将进行一些预先计算,以使我们的程序更快,然后它将能够在更高的约束条件下工作。

寻找解决方案的方法

在这种方法中,我们将在字符串中运行两个循环,第一个循环从开始到结束,第二个循环从结束到开始。现在,在每个点,我们对第一个循环中的 an 和第二个循环中的 b 形成的整数取模,然后我们就可以找到答案。

示例

#include 
using namespace std;
void divisionOfString(string &str, int a, int b){
    int n = str.length();
    vector mod_a(n+1, 0); //
    mod_a[0] = (str[0] - '0')%a;
    for (int i=1; i mod_b(n+1, 0);
    mod_b[n-1] = (str[n-1] - '0')%b;
    int power10 = 10; // as we have assigned answer to last index
    for (int i= n-2; i>=0; i--){ // end loop for calculating the mod of integer with b
        mod_b[i] = (mod_b[i+1] + (str[i]-'0')*power10)%b;
        power10 = (power10 * 10) % b;
    }
    for (int i=0; i
登录后复制

输出

YES
12 3
登录后复制

上述代码的解释

在这种方法中,我们现在计算每次除法形成的数字的余数。我们的第一个数字应该可以被 a 整除,因此我们运行一个前向循环并用 a 存储该数字的 mod。对于 b,我们运行一个向后循环并现在存储 mod,因为我们知道,如果任何位置的 an 的 mod 为零,并且下一个索引的 b 的 mod 为零,这将是我们的答案,因此我们打印它。

结论

在本教程中,我们解决了一个问题,将一个数字分成两个可整除的部分。我们还学习了该问题的 C++ 程序以及解决该问题的完整方法(普通)。我们可以用其他语言比如C、java、python等语言来编写同样的程序。我们希望本教程对您有所帮助。

以上是将以下内容翻译为中文:C++ 将一个数分成两个可被整除的部分的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:tutorialspoint.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!