如何计算出共有多少个数相互之间相交的值都是某定值
说明:附图第一排的1,2,3,4,5,6,7,8,9,10,11,12,13表示1到13的13个数,我编写了如下一段代码,既可以正常输出上图黑框里的数字。
#include <stdio.h>
int main()
{
int a[6][13]={{5,5,5,5,5,5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5,5,5,5,5,5},{8,8,8,8,8,8,8,8,8,8,8,8,8},{5,5,5,5,5,5,5,5,5,5,5,5,5}, {8,8,8,8,8,8,8,8,8,8,8,8,8}};
int i,j;
for(i=0;i<6;i++)
{
for(j=0;j<13;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
接下来的工作就是要计算:A与B相交于C. A就是第一排的1,2,3,4,5,6,7,8,9,10,11,12,13共13个数,C就是我上段代码里可以正常输出的所有数字5和8,B呢。B也是第一排的13个数。
那么如何计算呢?A与B相交于C,就是用第一排的1和B相交,看对应的C值是多少?B和A的关系是相对的,B始终大于A,比如:
1和2相交(这里A=1,B=2)B比A多1,所以就用上图“多1”所在的位置的行和1所在的位置的列相交的数(红5)就是C的值。
1和3相交(这里A=1,B=3)B比A多2,所以就用上图“多2”所在的位置的行和1所在的位置的列相交的数(蓝5)就是C的值。
...
1和7相交(这里A=1,B=7)B比A多6,所以就用上图“多6”所在的位置的行(也就是最后一行)和1所在的位置的列相交的数(8)就是C的值。
1和8相交(这里A=1,B=8)B比A多7,所以就用上图“多7”所在的位置的行(也就是最后一行)和8所在的位置的列相交的数(红8)就是C的值。
1和9相交(这里A=1,B=9)B比A多8,所以就用上图“多8”所在的位置的行和9所在的位置的列相交的数(绿5)就是C的值。
。。。
1和13相交(这里A=1,B=13)B比A多12,所以就用上图“多12”所在的位置的行和13所在的位置的列相交的数(紫5)就是C的值。
就这样1和12个数都相交一次,计算出每个C值。这里就得到了12个值(有值为5 的,也有值为8 的)。这里1和2,3,4,6,9,11,12,13(8个数)相交的值都是5,那么这8个数相互之间相交是不是也都是5呢?在这8个数(2,3,4,6,9,11,12,13)之间又得重复计算A与B相交于C的值的工作。计算如下:
2和3相交(这里A=2,B=3)B比A多1,所以就用上图“多1”所在的位置的行和2所在的位置的列相交的数5就是C的值。
.。。
2和9相交(这里A=2,B=9)B比A多7,所以就用上图“多7”所在的位置的行和9所在的位置的列相交的数8就是C的值。
.。。
就这样不停地计算,直到把这跟1有关的9个数(包括1本身)全部按这种计算方法计算完毕,最后找出共有多少个数相互之间相交的值都是5(或有多少个数相互之间相交的值都是8)。
这道题的最终目的就是:要计算出共有多少个数相互之间相交的值都是5(或都是8)。