如何开始这个C面试代码测试?

时间:2016-10-05 21:23:28

标签: c++

我在一家公司遇到了一个非常有趣的问题,我似乎无法找到答案。

#include <cstdio>
int main()
{
    int num = 123456789;
    int res = 0;
    for (int i = 0; i<111111111; i++)
    {
    res=(res+num)%1000000000;
    }
    printf("06 %09d", res);
    return 0;
    }

我应该声明num,所以输出是我的手机号码305089171。 知道怎么做吗?

2 个答案:

答案 0 :(得分:0)

因此,为了解决问题,我们从单位数字开始。

  1. 我们需要1个单位数字,所以make num = 1。
  2. 现在我们的资源为111111111。
  3. 现在我们需要数十位的7位数。因此我们将num =(7 - 1(步骤2中的十位))1 = 61.(另请注意,在十位上乘以数字只会影响到左边的数字)。
  4. 现在我们的资源为777777771。
  5. 现在我们在数百个地方需要1个。因此,如果我们使num = 461(因为7 + 4 = 1)
  6. 等等。
  7. 我能想到的数学推理是当你将数字乘以111111111时,数十位的数字只影响它左边的数字,而不影响它右边的数字。

答案 1 :(得分:-1)

以下是您需要输入num:

的值
254197461

我通过逐个添加额外的数字来获得它,我让你检查自己发生了什么。 我对此没有数学解释,但是尝试将数字逐个放入num中,你可能会理解: 1/61/461 / 7461 ......