1716 計算力扣銀行的錢(模擬)

2021-10-19 15:20:47 字數 1365 閱讀 2407

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專場,阿里雲研究員餘鋒帶來了 展望雲計算新時代資料庫...