H 愛出難題的F老師

2021-10-01 21:14:11 字數 1105 閱讀 6563

h.愛出難題的f老師

== description == 有乙個序列1,12,123,1234,…,12345678910, … ,先給出一整數n,問這個序列前n項中有多少項可以整除3。

input 乙個整數n(1<=n<=2^31-1)

output 輸出這個序列前n項中整除3的項數

sample input

sample output
hint %20的資料n<=100

%60的資料n<=1000000

%100的資料n<=2^31-1

如果卡題了,不妨換道題試試?

思路 我們應該知道,乙個數能整除 3 的充分必要條件是它的每一位的數字的和是能整除 3 的

觀察所給的序列:1,12,123,1234,12345,123456,…

每一位數字的和依次為 1,3,6,10,15,21,…

如果對 3 取餘,那就是 1,0,0,1,0,0,…

為什麼呢?

因為該序列每一項的數字和依次是前一項增加1,2,3,4,5,6,7,8,9,10,11,12,13,14,...

對三取餘則為 1,2,0,1,2,0,1,2,0,…如此迴圈

因此該序列從第一項開始以三項為迴圈節,第一項除以 3 餘 1,後兩項能整除 3 那麼該序列前 n 項能整除 3 的項數為n −⌊(?+2) 3 ⌋個

注意資料範圍是 n<=231 − 1,所以用這個公式需要開 long long 以防止 n+2 爆 int 如果找規律可以發現答案也是[?/3]∗2 +(?%3 == 2)

【源**】

#include

using

namespace std;

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

intmain()

小愛的愛情難題

description古希臘哲學大師蘇格拉底的三個 曾求教老師,怎樣才能找到理想的伴侶。蘇格拉底沒有正面回答,卻讓他們走田埂,只許前進,且只給乙個機會,要求是選摘乙個最好最大的穗。第乙個 沒走幾步,就看見乙個又大又漂亮的穗,高興地摘下來了。但他繼續前進時,發現前面有許多比他的那個大,但已經沒有機會,...

布納特老師的難題

include using namespace std int main int i,sum sum 0 for i 1 i 10000 i sum i cout 布納特老師的難題這個故事我都沒看過 所以請大家上網查一下 請大家原諒。這是布納特老師的難題的 我來講一下這堆 的意思 首先定義sum i...

F 郭鑫的難題(三)

f 郭鑫的難題 三 description 郭鑫是一名幼兒園老師。她想給她班上的孩子們一些糖果。所有的孩子都排成一排,每個孩子都根據其在課堂上的表現得到評分。她想給每個孩子至少1個糖果。如果兩個孩子坐在一起,那麼評分較高的孩子必須得到更多的糖果。郭鑫希望儘量減少她必須購買的糖果總數。例如,假設她的學...