CCF-CSP 影象旋轉與數位之和
201503-1 影象旋轉
問題描述
試題編號:201503-1 試題名稱:影象旋轉 時間限制:1.0s 記憶體限制:256.0MB 問題描述 旋轉是影象處理的基本操作,在這個問題中,你需要將一個影象逆時針旋轉90度。 計算機中的影象表示可以用一個矩陣來表示,為了旋轉一個影象,只需要將對應的矩陣旋轉即可。 輸入格式 輸入的第一行包含兩個整數n, m,分別表示影象矩陣的行數和列數。 接下來n行每行包含m個整數,表示輸入的影象。 輸出格式 輸出m行,每行包含n個整數,表示原始矩陣逆時針旋轉90度後的矩陣。 樣例輸入 2 3 1 5 3 3 2 4 樣例輸出 3 4 5 2 1 3 評測用例規模與約定 1 ≤ n, m ≤ 1,000,矩陣中的數都是不超過1000的非負整數。
題解1
根據輸出結果找規律,我們可以發現 m 行 n 列變成 n 行 m 列,並且是從右往左依次輸出每一列。於是,我們使用兩個迴圈輸出即可。
m, n = map(int, input().split())# 獲取輸入的m,n lst = [] for i in range(m):# 獲取輸入矩陣 lst.append(list(map(int, input().split()))) for i in range(n - 1, -1, -1):# 按列從右向左輸出 for j in range(m):# 從上到下輸出每一列的元素 print(lst[j][i], end=' ') print()# 每輸出一列就換行
題解2
上面的range(n - 1, -1, -1)
函式來實現從右到左的逆序掃描,其實也可以換成下面的寫法,range(n)
生成順序列表,然後通過n-1-i
來實現逆序掃描列,再從上到下輸出每一列的元素。
m, n = map(int, (input().split()))# 獲取輸入的m,n lst = [] for i in range(m):# 獲取輸入矩陣 lst.append(list(map(int, input().split()))) for i in range(n):# 按列從右向左輸出,用 n-1-i 來控制 for j in range(m):# 從上到下輸出每一列的元素 print(lst[j][n - 1 - i], end=" ")# 輸出元素 print()# 換行
201512-1 數位之和
問題描述
試題編號:201512-1 試題名稱:數位之和 時間限制:1.0s 記憶體限制:256.0MB 問題描述 給定一個十進位制整數n,輸出n的各位數字之和。 輸入格式 輸入一個整數n。 輸出格式 輸出一個整數,表示答案。 樣例輸入 20151220 樣例輸出 13 樣例說明 20151220的各位數字之和為2+0+1+5+1+2+2+0=13。 評測用例規模與約定 所有評測用例滿足:0 ≤ n ≤ 1000000000。
題解
這個題非常之簡單,只要注意如何讀取輸入即可。之前的所有例子都是通過input().split()
來讀取的,其中,input()
函式讀取輸入返回的是字串,會把input()
返回的字串按照空格進行切分然後返回一個列表。而我們這裡因為輸入的就是一串數字,沒有空格,所以不需要切分。於是,使用list(input())
將輸入的字串轉換成字元列表,然後通過map()
函式將列表中的字元轉換成整型,再使用sum()
函式求和即可。
lst = list(map(int, list(input()))) print(sum(lst))