51nod 1040 最大公約數之和

2021-07-09 12:15:44 字數 939 閱讀 3448

1040 最大公約數之和

rihkddd

基準時間限制:1 秒 空間限制:131072 kb 分值: 80 

難度:5級演算法題

給出乙個n,求1-n這n個數,同n的最大公約數的和。比如:n = 6

1,2,3,4,5,6 同6的最大公約數分別為1,2,3,2,1,6,加在一起 = 15

input

1個數n(n <= 10^9)
output

公約數之和
input示例

6
output示例

15
首先找n的各個因子,然後每乙個因子站屬於自己的空位置。算每乙個位置的貢獻。

**:

#pragma warning(disable:4996)

#include #include #include #include #include #include #include #include using namespace std;

typedef long long ll;

#define inf 0x3fffffff

const int mod = 1e9 + 7;

ll n;

vectorpri;

vector>ii;

void input()

void solve()

sort(pri.begin(), pri.end());

int sz = pri.size();

for (j = sz - 1; j >= 0; j--)

}sum = sum + r*(nu - minus);

ii.push_back(make_pair(r, nu - minus));

} cout << sum ;

}int main()

51nod1040最大公約數之和

題目大意 給出乙個n,求1 n這n個數,同n的最大公約數的和。比如 n 6 1,2,3,4,5,6 同6的最大公約數分別為1,2,3,2,1,6,加在一起 15 input 1個數n n 10 9 output 公約數之和 思路 將n分解質因子,每個質因子貢獻的是多少,累加求和。每個質因子貢獻的次數...

51Nod 1040 最大公約數之和

分析題目可以發現,兩個數gc d a,b x 則等價於gc d ax bx 1,問題就可以轉化為滿足gc d nx ix 1的i的個數,對答案貢獻就是個數乘上gc d n,i 很容易可以想到尤拉函式,因為 n 是小於等於n的數中與n互質的數的數目,gc d nx ix 1的i的個數就等於 nx 那麼...

51Nod 1040 最大公約數之和

1040 最大公約數之和 給出乙個n,求1 n這n個數,同n的最大公約數的和。比如 n 6 1,2,3,4,5,6 同6的最大公約數分別為1,2,3,2,1,6,加在一起 15 input 1個數n n 10 9 實際上應該是n 10 18output 公約數之和input示例 6output示例 ...