1040 最大公約數之和
基準時間限制: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示例
6output示例
15//先列舉 n 的因數,假設為k,如果乙個數x,與 n 的最大公約數等於 k, 那麼必定 x/k 與 n/k 互質,那麼求出個數累加即可,就轉化成尤拉函式了!
o(根號n*根號k...)? 反正很小了
1 #include 2view codeusing
namespace
std;
3#define mod 1000000007
4#define inf 0x3f3f3f3f
5#define eps 1e-9
6#define ll long long
7#define mx 1002
8#define mk 20002910
ll n;
11ll euler(ll x)
1221}22
if (x>1) res = res/x*(x-1
);23
return
res;24}
2526
intmain()
2739
}40 printf("
%lld\n
",ans);41}
42return0;
43 }
51nod 1040 最大公約數之和 尤拉函式
題目傳送門 我連這種水題都不會做啦 感覺要炸啊 n 的最大公約數必定是 n的因數 x 如果有 g個數和 n 的最大公約數為 x,那麼這 g 個數對答案的貢獻顯然為x g。那麼問題就轉化成了如何快速求出和 n 的最大公約數為 x的個數 g 觀察等式gc d n,i x 可以轉化成gc d n x,i ...
51nod 1040 最大公約數之和(尤拉)
連線 根據題意我們要把每個數與n 的最大公約數求出來是不可能的,先找出n的所有因數,既然是n的最大公約數,那麼他們之間肯定有共同的因子,而與n 的因子互質的數他們的最大公約數就是該因子m,再乘以倍數,總和相加就是了 include include include using namespace st...
51nod 1040 最大公約數之和
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 ...