每次添加后,如何向A添加N位数字使其能被B整除?


给定a、b和n。我们必须考虑以下条件,并找到最佳解决方案,向a添加n位数字,以便在每次迭代后它都能被b整除。

  • 以某种方式向**a**添加一位数字,使得添加后**a**能被**b**整除。

  • 打印经过n次步骤1迭代后**a**的最小可能值。

  • 如果操作失败,则打印**失败**。

检查每次添加数字后的整除性。

输入

a=5 b=4 n=4

输出

52000

解释

从**0**到**9**添加第一位数字,如果没有任何数字使**a**能被**b**整除,则答案为**-1**,这意味着如果在**a**中添加了**n**位数字,**a**永远不会被**b**整除。否则,添加满足条件的第一位数字,然后在其后添加**0** (n-1)次,因为如果**a**能被**b**整除,则**a*10**、**a*100**……也能被**b**整除。

示例

#include <iostream>
using namespace std;
int main() {
   int a = 5, b = 4, n = 4;
   int num = a;
   for (int i = 0; i <= 9; i++) {
      int temp = a * 10 + i;
      if (temp % b == 0) {
         a = temp;
         break;
      }
   }
   if (num == a) {
      a = -1;
   }
   for (int j = 0; j < n - 1; j++) {
      a *= 10;
   }
   if(a>-1) {
      cout <<a;
   } else {
      cout <<”fail”;
   }
   return 0;
}

更新于:2019年8月16日

90 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告