[GESP樣題 四級] 填幻方和幸運數

B3940 [GESP樣題 四級] 填幻方

題目

在一個N×N?的正方形網格中,每個格子分別填上從 1 到 N×N?的正整數,使得正方形中任一行、任一列及對角線的幾個數之和都相等,則這種正方形圖案就稱為“幻方”(輸出樣例中展示了一個3×3?的幻方)。我國古代稱為“河圖”、“洛書”,又叫“縱橫圖”。幻方看似神奇,但當?N?為奇數時有很方便的填法:

  1. 一開始正方形中沒有填任何數字。首先,在第一行的正中央填上?1。
  2. 從上次填數字的位置向上移動一格,如果已經在第一行,則移到同一列的最后一行;再向右移動一格,如果已經在最右一列,則移動至同一行的第一列。如果移動后的位置沒有填數字,則把上次填寫的數字的下一個數字填到這個位置。
  3. 如果第 2 步填寫失敗,則從上次填數字的位置向下移動一格,如果已經在最下一行,則移到同一列的第一行。這個位置一定是空的(這可太神奇了!)。把上次填寫的數字的下一個數字填到這個位置。
  4. 重復 2、3 步驟,直到所有格子都被填滿,幻方就完成了!

快來編寫一個程序,按上述規則,制作一個N×N?的幻方吧。

輸入為一個正奇數?N,保證 3≤N≤21。

輸出?N?行,每行?N個空格分隔的正整數,內容為N×N?的幻方。

運行代碼
#include <iostream>  
#include <vector>  
using namespace std;    
void FN(int N) {  vector<vector<int>> FF(N, vector<int>(N, 0));  int num = 1;  int r = 0, c = N / 2;  while (num <= N * N) {  // 將數字填入當前位置  FF[r][c] = num++;  // 計算下一個位置  int R= (r - 1 + N) % N;  int C = (c + 1) % N;  // 檢查下一個位置是否已被占用  if (FF[R][C] != 0) {  r = (r+ 1) % N;  } else {  r = R;  c = C;  }  }  // 打印幻方  for (int i = 0; i < N; ++i) {  for (int j = 0; j < N; ++j) {  cout << FF[i][j] << (j < N - 1 ? " " : "\n");  }  }  
}  
int main() {  int N;  cin >> N;  if (N % 2 == 0 || N < 3 || N > 21) {  return 1;  }  FN(N);  return 0;  
}
思路
  • 初始化一個N x N的二維向量vector<vector<int>> FF(N, vector<int>(N, 0));,用來存儲幻方數據,初始值全為0。設置計數器num = 1,用于填充數字。
  • 定義兩個變量rc來追蹤當前填充的位置,初始位置設在中心(r = 0, c = N / 2)
  • 使用while循環,直到所有數字填充完畢(num <= N * N)。
  • 在當前位置(r, c)放入數字num,然后遞增num
  • 計算下一個位置的行R和列C,使用取模運算保證位置在矩陣范圍內。
  • 如果下一個位置已占用,則向下一行移動;否則,更新當前位置為計算出的下一個位置。

B3850 [GESP202306 四級] 幸運數

題目

小明發明了一種 "幸運數"。一個正整數,其偶數位不變(個位為第?1?位,十位為第?2?位,以此類推),奇數位做如下變換:將數字乘以?7,如果不大于?9?則作為變換結果,否則把結果的各位數相加,如果結果不大于?9?則作為變換結果,否則(結果仍大于?9)繼續把各位數相加,直到結果不大于?9,作為變換結果。變換結束后,把變換結果的各位數相加,如果得到的和是?8?的倍數,則稱一開始的正整數為幸運數。

例如,16347:第?1位為?7,乘以?7?結果為 49,大于 9,各位數相加為13,仍大于9,繼續各位數相加,最后結果為4;第3?位為3,變換結果為3;第?55?位為?1,變換結果為?7。最后變化結果為?76344,對于結果76344?其各位數之和為24,是?8的倍數。因此 16347?是幸運數。

輸入第一行為正整數?N,表示有?N個待判斷的正整數。約定 1≤N≤20。從第?2?行開始的?N?行,每行一個正整數,為待判斷的正整數。約定這些正整數小于?10^12。

輸出?N行,對應?N?個正整數是否為幸運數,如是則輸出 'T',否則輸出 'F'。

提示:不需要等到所有輸入結束在依次輸出,可以輸入一個數就判斷一個數并輸出,再輸入下一個數。

運行代碼
#include <iostream>  
#include <string>  
#include <algorithm>  
using namespace std; 
int FN(long long num) {  int sum = 0;  while (num > 0) {  sum += num % 10;  num /= 10;  }  return sum;  
}  
// 函數:對奇數位進行變換  
string FF(const string& numStr) {  string result;  for (size_t i = 0; i < numStr.size(); ++i) {  if (i % 2 == 0) { // 偶數位直接添加  result += numStr[i];  } else { // 奇數位進行變換  int digit = numStr[i] - '0';  int t = digit * 7;  while (t> 9) {  t= FN(t);  }  result +=to_string(t);  }  }  return result;  
}  
// 函數:判斷是否為幸運數  
bool Number(const string& numStr) {  string t = FF(numStr);  return FN(stoll(t)) % 8 == 0;  
}  
int main() {  int N;  cin >> N;  cin.ignore(); // 忽略可能存在的換行符  while (N--) {  string numStr;  getline(cin, numStr); // 讀取一行字符串作為數字  if (Number(numStr)) {  cout << "T" << endl;  } else {  cout << "F" << endl;  }  }  return 0;  
}
思路
  • 計算一個數的各位數之和。
  • FN:對輸入的數字字符串的奇數位進行變換,并返回變換后的字符串。
  • Number:判斷一個數字字符串是否為幸運數。

main函數中,我們讀取要判斷的正整數個數N,然后對每個正整數進行判斷并輸出結果。注意我們使用getline來讀取每行的輸入,以正確處理可能包含前導零的情況。此外,我們使用stoll將變換后的字符串轉換回long long類型,以計算其各位數之和。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10324.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ICode國際青少年編程競賽- Python-4級訓練場-嵌套for循環練習

ICode國際青少年編程競賽- Python-4級訓練場-嵌套for循環練習 1、 for i in range(3):Spaceship.step(4)for j in range(4):Dev.step(2)Dev.turnRight()Spaceship.turnLeft()Spaceship.step(4)Spaceship.turnRight()2、 for i in range(4):Spaceship.step(6)for j in range(3):…

Nginx或Tengine服務器配置SSL證書

目錄 前提條件 步驟一&#xff1a;下載SSL證書 步驟二&#xff1a;在Nginx服務器安裝證書 步驟三&#xff1a;驗證SSL證書是否配置成功 前提條件 已通過數字證書管理服務控制臺簽發證書SSL證書綁定的域名已完成DNS解析&#xff0c;即您的域名與主機IP地址相互映射已在Web服…

維修Philips IU22飛利浦四維多普勒彩超診斷儀 V6-2 L12-5 C8-4V深圳捷達工控維修

專為新時代而設計。專為更多而設計。 超聲波在抗擊 COVID-19 中的成像作用不斷擴大&#xff0c;并且對血管和心臟檢查的需求不斷增加&#xff0c;因此比以往任何時候都更有價值。飛利浦的超聲產品組合&#xff08;包括 EPIQ Elite&#xff09;為一線護理人員提供了寶貴的診斷支…

Intel處理器7z/XZ遇到 The failure in hardware

最近在使用Intel 12700H混合架構處理器的時候&#xff0c;一旦使用7z或者XZ算法壓縮東西就會出現如下的報錯&#xff1a; Internal Error: The failure in hardware (RAM or CPU), OS or program在檢查排除了內存、磁盤和OS的問題后&#xff0c;最終確定為Intel CPU的問題&…

Lazada、Shopee測評自養號,快速出單技巧全解析!

每個人都憧憬著自己的店鋪能夠擁有一款或多款引人注目的熱銷商品&#xff0c;這些商品不僅能為店鋪帶來可觀的收益&#xff0c;更重要的是它們能夠成為吸引顧客的強大磁石&#xff0c;顯著提升店鋪的整體流量。一旦這樣的爆款商品成功吸引顧客&#xff0c;其他產品也將隨之受到…

C++11:并發新紀元 —— 深入理解異步編程的力量(1)

hello &#xff01;大家好呀&#xff01; 歡迎大家來到我的Linux高性能服務器編程系列之《C11&#xff1a;并發新紀元 —— 深入理解異步編程的力量》&#xff0c;在這篇文章中&#xff0c;你將會學習到C新特性以及異步編程的好處&#xff0c;以及其如何帶來的高性能的魅力&…

Python:通過接口獲取公眾號的文章列表(但是開發文檔沒有這個接口)

&#x1f4da;博客主頁&#xff1a;knighthood2001 ?公眾號&#xff1a;認知up吧 &#xff08;目前正在帶領大家一起提升認知&#xff0c;感興趣可以來圍觀一下&#xff09; &#x1f383;知識星球&#xff1a;【認知up吧|成長|副業】介紹 ??感謝大家點贊&#x1f44d;&…

【LeetCode】每日一題:2960. 統計已測試設備

給你一個長度為 n 、下標從 0 開始的整數數組 batteryPercentages &#xff0c;表示 n 個設備的電池百分比。 你的任務是按照順序測試每個設備 i&#xff0c;執行以下測試操作&#xff1a; 如果 batteryPercentages[i] 大于 0&#xff1a; 增加 已測試設備的計數。 將下標在 [i…

力扣HOT100 - 35. 搜索插入位置

解題思路&#xff1a; 二分法模板 class Solution {public int searchInsert(int[] nums, int target) {int left 0;int right nums.length - 1;while (left < right) {int mid left ((right - left) >> 1);if (nums[mid] target)return mid;else if (nums[mid…

【qt】設計器實現界面

設計器實現界面 一.總體思路二.具體操作1.創建項目2.粗略拖放3.水平布局4.垂直布局5.修改名字6.轉到槽7.實現槽函數 一.總體思路 二.具體操作 1.創建項目 這次咱們一定要勾選Generate form哦。 因為我們要使用設計器進行拖放。 2.粗略拖放 這里用到了復選框&#xff1a;C…

[數據集][目標檢測]管道焊縫質量檢測數據集VOC+YOLO格式1134張2類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;1134 標注數量(xml文件個數)&#xff1a;1134 標注數量(txt文件個數)&#xff1a;1134 標注…

python元類與C#、Java中的反射

Python的元類和C#中的反射 在概念上有一定的相似性&#xff0c;但它們的目的和使用方式有所不同。 Python的元類&#xff1a; 元類&#xff08;Metaclass&#xff09;是控制類創建的類。它們定義了類的創建過程&#xff0c;可以修改類的行為。元類通過定制類的創建過程&…

算法訓練營第二十五天 | LeetCode 669 修剪二叉樹、

LeetCode 669 修剪二叉樹 這題用層序遍歷雙指針刪除不符合條件的節點即可。具體是要用到一個虛擬根節點&#xff0c;雙指針中prev指針每次指向隊列頂元素&#xff0c;cur指針先指向prev左子節點&#xff0c;用循環去除這個位置上不符合條件的節點并連上繼承節點&#xff0c;內…

“我們堅持開源!”阿里云發布“地表最強”中文大模型:半年一迭代、性能翻倍?

5 月 9 日&#xff0c;在通義大模型發布一周年之際&#xff0c;阿里云大模型生態迎來一次重大升級&#xff0c;主要有“四個最”&#xff1a; 通義千問 2.5 正式發布&#xff0c;“模型性能全面趕超 GPT-4 Turbo&#xff0c;成為地表最強中文大模型”&#xff1b;Qwen1.5-110B…

卷積特征圖與感受野

特征圖尺寸和感受野是卷積神經網絡中非常重要的兩個概念&#xff0c;今天來看一下&#xff0c;如何計算特征尺寸和感受野。 特征圖尺寸 卷積特征圖&#xff0c;是圖片經過卷積核處理之后的尺寸。計算輸出特征的尺寸&#xff0c;需要給出卷積核的相關參數包括&#xff1a; 輸…

PC端與bluetooth藍牙虛擬串口通信

應該采用RFCOMM虛擬串口方式來進行通信&#xff0c;原理跟socket通信類似&#xff0c;不同的是使用的通信協議不同&#xff0c;本人結合相關的API&#xff0c;做了以下最簡單的封裝。 1、獲取本地藍牙設備與附近藍牙設備信息 2、通信類 /* 通信類&#xff1a;只是對于客戶端通…

基于Python實現單例模式

目錄 1、使用裝飾器實現 2、使用__new__方法實現 單例模式是一種設計模式&#xff0c;它確保一個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問這個唯一實例。這種模式在多種場景中都非常有用&#xff0c;以下是單例模式的一些常見應用場景&#xff1a; 應用程序的…

Spring線程池有哪些

目錄 SimpleAsyncTaskExecutor SyncTaskExecutor ThreadPoolTaskExecutor ThreadPoolTaskScheduler Spring框架提供了多種線程池類型,以滿足不同場景下的需求。以下是一些常見的Spring線程池類型: SimpleAsyncTaskExecutor 這個實現不重用任何線程,每次調用都會啟動一…

抽空學學go

2024年5月9日11:14:24 學習go 看課8小時轉職Golang工程師(如果你想低成本學習Go語言)_嗶哩嗶哩_bilibili 文檔[8小時轉職Golang工程師 (yuque.com)]( 1.安裝go 2024年5月9日11:27:16 2.安裝 vscode go配置環境 vs code配置go開發環境 (zhihu.com) vscode里面配置代理&…

全志ARM-SG90舵機

控制轉角 向黃色信號線“灌入”PWM信號。 PWM波的頻率不能太高&#xff0c;50hz&#xff0c;即周期1/頻率1/500.02s&#xff0c;20ms左右數據&#xff1a; 不同的PWM波形對應不同的旋轉角度&#xff0c;以20ms為周期&#xff0c;50hz為頻率的PWM波 定時器需要定時20ms,關心的單…