#16521: c519


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
b351. 幻方(魔方陣)之一:奇N 階 -- 維基百科:zh.wikipedia.org/wiki/幻方 | From: [27.52.77.116] | 發表日期 : 2019-01-09 23:34

這題跟 c519 剛好相反,那一題是給數字求位置,這題是給位置求數字

兩題是類似的,而這題可以不找規律,並且不需要開陣列

只要從 1 開始數,追蹤行列直到符合題目測資,數到的數字就是答案

while( i != r || j != c)
{
      i--;  j--;
      if(i<0) i= n-1;
      if(j<0) j= n-1;
      k++;
      if((k-1)%n==0)
      {
            i=(i+1)%n;
            j=(j+1)%n;
            i++;
      }
}

 
#16522: Re:c519


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
b351. 幻方(魔方陣)之一:奇N 階 -- 維基百科:zh.wikipedia.org/wiki/幻方 | From: [27.52.77.116] | 發表日期 : 2019-01-10 00:32

 

找到規律了,跟 c519 很像

這題是知道第 r 列 第 c 行,用這個求出這個位置的數字屬於第幾組

team = c - r ,每個左上右下斜線為一組,且每 n 個為一組

所以 team 若大於 n/2 或小於 -n/2 ,要 減 / 加 n ,即得真正組數

( 上述算法可知 1 ~ n 是第 0 組,n+1 ~ 2n 是第 1 組 ....... )

接著是找這組第一個數字的位置,我在 c519 有講解

求得該數字後,依開頭位置推到題目給定位置,差值+該組開頭數字即是答案

 
ZeroJudge Forum