1. 問題描述:
hercy 想要為購買第一輛車存錢。他每天都往力扣銀行裡存錢。最開始,他在周一的時候存入 1 塊錢。從周二到週日,他每天都比前一天多存入 1 塊錢。在接下來每乙個周一,他都會比前乙個周一多存入 1 塊錢。給你 n ,請你返回在第 n 天結束的時候他在力扣銀行總共存了多少塊錢。
示例 1:
輸入:n = 4
輸出:10
解釋:第 4 天後,總額為 1 + 2 + 3 + 4 = 10
示例 2:
輸入:n = 10
輸出:37
解釋:第 10 天後,總額為 (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4) = 37 。注意到第二個星期一,hercy 存入 2 塊錢。
示例 3:
輸入:n = 20
輸出:96
解釋:第 20 天後,總額為 (1 + 2 + 3 + 4 + 5 + 6 + 7) + (2 + 3 + 4 + 5 + 6 + 7 + 8) + (3 + 4 + 5 + 6 + 7 + 8) = 96 。
2. 思路分析:
分析題目可以知道我們需要計算出n天中以7為週期的個數,例如n = 20那麼以7為週期的個數為2,以7為週期的錢是很好計算的,將每一周的錢累加,下一周的錢為上一周錢加7即可,所以總的錢為:(1 + 7) * 7 // 2 * period + period * (period - 1) // 2 * 7,period為以7為週期的個數,當n = 20時period = 2,我們一開始都是以1 + 2 + ... 7計算的,而下一周為上一周的錢加7所以我們需要累加上在這麼多週中多出來的7,為period * (period - 1) // 2 * 7,最後需要加上以7為週期剩餘的天數,為等差數列求和:(n // 7 + 1 + n // 7 + 1 + n % 7 - 1) * n % 7 // 2,首項為n // 7 + 1
3. **如下:
class solution:
def totalmoney(self, n: int) -> int:
# 模擬即可: 計算出有多少個7即可
if n <= 7:
return (1 + n) * n // 2
period, last = n // 7, n % 7
return (1 + 7) * 7 // 2 * period + period * (period - 1) // 2 * 7 + ((n // 7 + 1) * 2 + last - 1) * last // 2
1716 計算力扣銀行的錢
題目描述 hercy 想要為購買第一輛車存錢。他 每天 都往力扣銀行裡存錢。最開始,他在周一的時候存入 1 塊錢。從周二到週日,他每天都比前一天多存入 1 塊錢。在接下來每乙個周一,他都會比 前乙個周一 多存入 1 塊錢。給你 n 請你返回在第 n 天結束的時候他在力扣銀行總共存了多少塊錢。示例 1...
掃盲人工智慧的計算力基石 異構計算
摘要 本文將帶領入門讀者了解cpu,gpu,fpga,asic和異構計算的一些基本概念和優缺點,希望幫助入門者和愛好者建立基本的晶元概念 人工智慧有三要素 演算法,計算力,資料。我們今天主要來講講計算力。計算力歸根結底由底層晶元提供。按照計算晶元的組成方式,可以分成 同構計算 使用相同型別指令集和體...
展望雲計算新時代資料庫計算力的進化
從1970年關聯式資料庫理論被提出,到2006雲計算概念的誕生,半個世紀以來it行業的科技革新不斷引領著時代潮流。作為it技術的核心領域之一,資料庫如何在雲計算的大時代背景下持續進化,開拓創新。10月12日的雲棲大會 阿里雲自研資料庫polardb專場,阿里雲研究員餘鋒帶來了 展望雲計算新時代資料庫...