C++程序:将数字分成两个可被给定数字整除的部分


在本教程中,我们将编写一个程序,将一个数字分成两个部分,这两个部分分别可被给定的数字整除。

我们以字符串格式给定一个数字和另外两个整数。程序应该返回是否可以将给定的数字分成两个部分,使得第一部分可被第一个数字整除,第二部分可被第二个数字整除。

让我们看看解决问题的步骤。

  • 初始化数字和两个用于除法的整数。

  • 迭代数字,直到第一部分可被第一个数字整除。

  • 通过将每个字符转换为数字来形成数字。

  • 当它可被第一个数字整除时,中断循环。

  • 现在,从下一个索引开始迭代数字的第二部分。

  • 像第一部分一样形成数字。

  • 检查第二部分是否可被第二个数字整除。

  • 如果第一部分和第二部分分别可被第一个和第二个数字整除,则打印它们,否则打印“不可能”。

示例

让我们看看代码。

 在线演示

#include <bits/stdc++.h>
using namespace std;
void checkTheDivisabilityOfPrefixAndSuffix(string num, int prefix_dividend, int suffix_dividend) {
   int N = num.length();
   bool is_prefix_divisable = false, is_suffix_divisable = false;
   int index = 0;
   int prefix = num[index] - '0';
   while (index < N) {
      if (prefix % prefix_dividend == 0) {
         is_prefix_divisable = true;
         break;
      }
      prefix = prefix * 10 + (num[++index] - '0');
   }
   int suffix = num[++index] - '0';
   while (index < N - 1) {
      suffix = suffix * 10 + (num[++index] - '0');
   }
   cout << suffix << endl;
   if (suffix % suffix_dividend == 0) {
      is_suffix_divisable = true;
   }
   if (is_prefix_divisable && is_suffix_divisable) {
      cout << prefix << " " << suffix << endl;
   }
   else {
      cout << "Not possible" << endl;
   }
}
int main() {
   string number = "125333";
   int prefix_dividend = 5;
   int suffix_dividend = 3;
   checkTheDivisabilityOfPrefixAndSuffix(number, prefix_dividend, suffix_dividend);
   return 0;
}

输出

如果运行以上代码,则会得到以下结果。

125 333

结论

如果您在本教程中有任何疑问,请在评论区中提出。

更新于: 2021年1月28日

497 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告