51nod 1188 最大公約數之和 V2

2021-07-24 04:16:36 字數 846 閱讀 3483

給出乙個數n,輸出小於等於n的所有數,兩兩之間的最大公約數之和。

本來和bzoj的2705有類似  改了改還是tle,發現有重複的地方 借鑑了下別人的**把核心求phi(x)*y 拿出來預處理就好了 用了快讀優化 交第一次最後一點tle  交第二次就過了 最後乙個點1600+ms,不是很懂這個評測機。。。

#include#include#include#include#include#include#include#define ll long long

using namespace std;

ll n,m,t;

long long read()

while(ch>='0' && ch<='9')

return x*f;}

ll sum[5150000];

ll phi[5150000],prime[5150000],tot;

bool check[5150000];

ll f[5100000];

void getphi(int gg)

for(int j=1;j<=tot;j++)

else phi[i*prime[j]]=phi[i]*phi[prime[j]];

} }} ll sum[5111000]=;

ll fun(ll x)

void init(int g)

}ll ss[10000000/2+1000];

int main()

return 0;

}

數論 51nod1188 最大公約數之和 V2

題面 51nod1188 n i 1g cd i n 我們轉成了 n x np hi n x x 這題繼續用 本題要求 n i 1 i 1j 1gc d i,j 那我們可以先轉成 n i 1 i 1x iph i i x x 我們再轉化一下就成了 n i 2 x y nx 1ph i i x可以發現...

51nod 最大的最大公約數

這道題挺有意思,讓求最大的兩兩最大公約數,很顯然暴力直接做複雜度太高。可以利用試除法,列舉每乙個數的因子,如果某個因子出現超過了兩次,就可以進行判斷,因為題目要求兩兩。最大公約數一定是某個數的因子。include includeusing namespace std int cnt 50005 an...

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 ...