THis is test for 页首

除余取模的算术变化特点,模的变化特点

前言

  这是一篇我记在 麦库 上的笔记,现在移动到博客园来。

i%x  的结果一定是 0~x-1 内。且随着 i 整数的顺序递增或递减。 其也在 0~x-1 的范围内周期变化。

相比于 i/x  i%x, 当i整数 循序递增或递减时,i/x 的结果变化1时,i%x 的结果变化 一个周期。

例如: i=81;

then  i/9  =9;

and  i%9=0;

 

i--;

i/9=8;

i%9=8;

 

i--;

i/9=8;

i%9=7;

 

i--;

i/9=8;

i%9=6;

 

分析 由于 i/9  可以得知i 为9的倍数,如果变化率没有相对于除数的倍数变化,则除的结果是不会变化的,而被除数的变化则反映到了余数上。

示例:

中国象棋中 将帅 组合问题(求出将帅位置组合) 解法应用:

int i=81;

while(i--)

{

    if(i/9%3==i%9%3)

        continue;

    printf("A=5d,B=%d\n",i/9+1,i%9+1);

}

 

解析:

由于i=0对将帅的位置程序编号为: 

0 1 2

3 4 5

6 7 8

=====

0 1 2

3 4 5

6 7 8

 

可看出将帅的位置组合为  9×9 =81 钟

判断将帅是否在同一纵轴上 可以用  x%3==y%3 的方法。

i/9 表示了, 0~8 的变化范围,由上面的规律可以知道。

当 i递减时, i/9 变化一次 ,i%9 变化9次 即一个周期, 而这刚好是固定将A 的位置, 而帅B 所有位置都走一遍的组合。

因此 i/9%3==i%9%3 表示 两者在同一纵轴上。

(i/9,i%9)

就是所有的81总组合。

posted @ 2012-08-01 19:09  DotDot  阅读(413)  评论(0编辑  收藏  举报
页脚