尤拉計畫部分題解報告(21 25)

2021-08-21 11:59:39 字數 1912 閱讀 1270

021 amicable numbers (開啟傳送門)。

題意:讓你找到所有符合d(

d(n)

)==n d(d

(n))

==n

&& d(

n)≠n

d (n

)≠

n的和。其中d(

n)d (n

)為

n n

的除本身外所有的因子和。

分析:直接求出每個數的因子和,然後判斷就行。

**:

#include

using namespace std;

const int maxm = 1e4+10;

long

long

sum[maxm];

void init()

sum[i]-=i;

}}int main()

cout0;}

022 names scores (開啟傳送門)。

題意:結構體排序計算。

分析:按照題意給的意思直接計算即可。涉及檔案操作,就不貼**了。

答案:871198282

023 non-abundant sums(開啟傳送門)。

題意:模擬於完全數,定義出了盈數,問你所有不能用兩個盈數表示的數的和。

分析:題目中告訴了,所有不能用兩個盈數表示的數不超過28123。所以我們預處理出所有的盈數,然後處理出所有符合要求的數,求和即可。

**:

#include 

using

namespace

std;

const

int maxm = 28124;

int num[maxm];

int flag = 0;

int cho[maxm];

bool can[maxm];

int main()

}for(int i = 0;ifor(int j = i;jif(cho[i]+cho[j]true;}}

}long

long ans = 0;

for(int i = 1;iif(can[i]) continue;

ans+=i;

}cout

0;}

024 lexicographic permutations(開啟傳送門)。

題意:問你0-9構成的全排列中第1000000個排列是多少。

分析:如果只是為了答案,乙個比較容易的做法是直接呼叫next_permutation函式1000000次就行了,但是正解應該是二分每一位,因為每乙個確定的排列,都可以算出他是第幾個排列,然後就可以得到答案。

**:(呼叫函式)

#include 

using

namespace

std;

int num[10] = ;

int main() while(next_permutation(num,num+10));

for(int i = 0;i<10;i++)

025 1000-digit fibonacci number (開啟傳送門)。

題意:問你fibonacci數列中,第幾個位數大於等於1000.

分析:乙個比較暴力的做法是直接用大數算出前面幾千項,然後看你一下答案就行。但是乙個更推薦的做法是:推公式,因為我們能知道第

i' role="presentation">i

i項的大小,因為有通項公式,然後就是對10取log就行了。

**:(暴力做法)

biginteger num[3];

int main()

now = (now+1)%3;

ind++;

}return

0;}

尤拉計畫第9題題解

a pythagorean triplet is a set of three natural numbers,a b c for which,a 2 b 2 c 2 for example,3 2 4 2 9 16 25 5 2 there exists exactly one pythagore...

尤拉計畫 6

前十個自然數的平方和是 1 2 2 2 10 2 385 前十個自然數的和的平方是 1 2 10 2 552 3025 所以平方和與和的平方的差是3025 385 2640.找出前一百個自然數的平方和與和平方的差。def get square sub x 遞迴,展開行列式 if x 1 return...

尤拉計畫 14

以下迭代序列定義在整數集合上 n n 2 當n是偶數時 n 3n 1 當n是奇數時 應用以上規則,並且以數字13開始,我們得到以下序列 13 40 20 10 5 16 8 4 2 1 可以看出這個以13開始以1結束的序列包含10個項。雖然還沒有被證明 collatz問題 但是人們認為在這個規則下,...