繁体   English   中英

向右旋转序号

[英]Rotating sequential numbers to right

它很容易将数字向左旋转。 我将执行以下操作:

int numberCount = 4;
int rotationCount = 2 * numberCount;
for(int i = 0; i < rotationCount; i++)
{
  for(int j = 0; j < numberCount; j++)
  {
    System.out.print((i+j) % numberCount + " ");
  }

  System.out.println();
}

在此示例中,将打印以下内容:

0 1 2 3

1 2 3 0

2 3 0 1

3 0 1 2

0 1 2 3

1 2 3 0

2 3 0 1

3 0 1 2

您将如何做同样的事情,但是将数字向右旋转?

一旦想到,答案就很明显了-向左移动数字,然后加上数字,向右移动数字,减去数字。 我以为公式会发生重大变化,所以我想到的是比解决方案复杂得多的公式。

// ensures mod is positive
int mod(int a, int b)
{ return (a%b+b)%b; }

int numberCount = 4;
int rotationCount = 2 * numberCount;

for(int i = 0; i < rotationCount; i++)
{
    for(int j = 0; j < numberCount; j++)
    {
        System.out.print(mod((j-i), numberCount) + " ");
    }

    System.out.println();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM