日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Sicily 1694. Spiral

發布時間:2025/1/21 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sicily 1694. Spiral 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

訓練的題目

模擬題,蛇形矩陣,保證是n*n的矩陣,并且n是奇數 , 在矩陣中填數,從最中心開始填,逆時針轉圈,1,2,3…………n*n。輸入n,表示矩陣的大小,輸入一個數字m,找出m在矩陣的哪行哪列

其實這個蛇形矩陣可以分為一圈一圈來看,要找m,可以先確定它在哪一圈

每一圈都值的范圍是 ?[ k^2+1 , (k+2)*(k+2) ] ,其中k是奇數

看一圈的四個角,

右上角最大: ?max = (k+2)*(k+2)

左上角次之: ?max - (k+2) + 1

左下角再次: max - 2*(k+2) + 2

右下角 : ? ? max - 3*(k+2) + 3

?

所以可以以這4個值作為一個范圍,將這個圈分成4份,叫做 上行 , ?左列 ?, ?下行 ?, ?右列

這4分里面的數字是連續的,要在里面找一個值,直接掃描即可

?

代碼寫得不是很好,后來沒修改了

#include <cstdio> #include <cstring> #define MAX 32768typedef long long ll; ll nn[MAX+10]; ll pos,n;void init() {memset(nn,0,sizeof(nn));for(ll i=1; i<=MAX+6; i+=2)nn[i] = i*i; }ll search(ll p) {for(ll i=1; ; i+=2)if(nn[i] < p && p <= nn[i+2])return i;return -1; }int main() {init();int T;scanf("%d",&T);while(T--){scanf("%lld%lld",&n,&pos);if(pos == 1){printf("%lld %lld\n",(n+1)/2 , (n+1)/2);continue;}ll m = search(pos);ll max = (m+2)*(m+2);ll q = (m+1)/2;//【 m*m+1 , (m+2)*(m+2) 】//找到在第q圈 ll r , c;ll k;ll temp;if(pos <= max && pos > max-(m+2)+1) //上行 {r = (n+1)/2 - q;c = (n+1)/2 + q;temp = max;for(k=c; ;k--,temp--)if(temp == pos)break;printf("%lld %lld\n",r,k);}else if(pos <= max-(m+2)+1 && pos > max-2*(m+2)+2 ) //左列 {c = (n+1)/2 - q;r = (n+1)/2 - q;temp = max-(m+2)+1;for(k=r; ;k++,temp--)if(temp == pos)break;printf("%lld %lld\n",k,c);}else if(pos <= max-2*(m+2)+2 && pos > max-3*(m+2)+3 ) //下行 {r = (n+1)/2 + q;c = (n+1)/2 - q;temp = max-2*(m+2)+2;for(k=c; ;k++,temp--)if(temp == pos)break;printf("%lld %lld\n",r,k);}else if( pos <= max-3*(m+2)+3 && pos > max-4*(m+2)+4)//右列 {c = (n+1)/2 + q;r = (n+1)/2 + q;temp = max-3*(m+2)+3;for(k=r; ;k--,temp--)if(temp == pos)break;printf("%lld %lld\n",k,c);}}return 0; }

?

總結

以上是生活随笔為你收集整理的Sicily 1694. Spiral的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。