一个特别有趣的计划

时间:2012-02-04 03:35:58

标签: c++

我们今天在数学课上做了这个问题,以便在测验后消磨时间,我想知道我是否可以按照这些方式制作一个程序

所以这个想法是这样的:
取数字123,456,789
左边的第一个数字可以被1整除,好,继续
左边的前两位数可以被2整除,好,继续
左边的前三位数可以被3整除,好,继续
左边的前4位数字不能被4整除,你会得到一个余数,不好,用不同的数字重新开始,或者直到其中一个数字可以被替换(偶数空间可以互换) 这里棘手的部分是你不能两次使用相同的整数 我们可以确定的唯一地方是第五位,所以我们可以看出这个数字看起来像:_ _ _,_ 5 _,_ _ _

我希望程序打印出完全可分的数字,一直到那些地方。我很确定只有一个数字符合这个标准,但我想知道这是否属实,这就是我试图制作这个程序的原因。

我需要帮助的是我应该如何检查每个数字除以其位置是否没有余数,以及如果它不适合如何返回。

编码很新。一切都有帮助

2 个答案:

答案 0 :(得分:2)

编程只是描述计算机的一系列步骤

编辑 - 抱歉,重新阅读这个问题,将值存储为长整数然后在循环中增加它会更容易。

在这种情况下,您将必须了解如何通过除以10 ^ 6(或其他)获得前3位数,然后仅取整数部分。 您也需要模数运算符%

答案 1 :(得分:0)

您可以设置一个循环,它使用模数运算符(%)来获取数字的余数。我会设置一个legnth为10的数组,并将数字模数加10并将结果放入数组中(因为你将反向读取数字,你需要将它们反向放入数组中),直到你得到每个数字

然后我会设置一个int(名为maybe value),并将数组中的第一个值放入此int中。我还要指定另一个int(名为maybe place)并将其设置为1.定义一个bool(名为maybe flag)。

然后我会输入一个循环,以便你得到等式if(value % place == 0) flag = 0。 然后在flag == 1之前进行循环中断,并在循环之前转到标签,在那里你有一个生成新数字的算法(可能只是添加一个或任何你想要的东西)。如果place == 10和数字中的最后一个值为0,则在循环内部,您需要打印数字,然后在循环之前跳转到之前的标签,以选择一个新数字。另外,如果flag == 0place != 10(数字还没有失败,但最终还没有结束),请不要忘记,你需要增加value乘以10,然后在数组中添加下一个数字,以便能够测试下一个地方。而且您还需要每次将place增加1。

你说你是新人,所以我将包括一些定义:

  1. ' ='设置一个等于somthing的变量,' =='用于测试相等性
  2. '!='意味着"不等于"。它还用于针对其他变量或数字测试变量。
  3. '%'或模数除以两个数字,而是返回余数(例如10%3 = 1,因为10/3 = 9 余数1