meili 发表于 2022-10-27 16:05:15

求算法及程序由1*1的正方形拼成的长宽分别为m*n的长方形,求长方形对角线穿过小正方形的个数.

<p>问题:求算法及程序由1*1的正方形拼成的长宽分别为m*n的长方形,求长方形对角线穿过小正方形的个数.
<p>答案:↓↓↓<p class="nav-title mt10" style="border-top:1px solid #ccc;padding-top: 10px;">李唯为的回答:<div class="content-b">网友采纳  算法主要是推出函数f=m+n-great_common_div(m,n)  #include  #include  #defineabss(x)((x)>(0)?(x):(-x))  #definemins(a,b)((a)>(b)?(b):(a))  usingnamespacestd;  intgre_com_div(inta,intb)  {  if(a==0)returnb;  if(b==0)returna;  if(!(a&1)&&!(b&1))returngre_com_div(a>>1,b>>1)1,b);  elseif(!(b&1))returngre_com_div(a,b>>1);  elsereturngre_com_div(abss(a-b),mins(a,b));  }  intmain()  {  intm,n;  while(scanf("%d%d",&m,&n),m,n)//inputm,nandm,n!=0  {  printf("Cross%dsquare(s)n",m+n-gre_com_div(m,n));  }  return0;  }
页: [1]
查看完整版本: 求算法及程序由1*1的正方形拼成的长宽分别为m*n的长方形,求长方形对角线穿过小正方形的个数.