南京理工大學第八屆程式設計大賽triple

2021-07-11 07:22:00 字數 1030 閱讀 6088

題目大意:在一定範圍內找出三個最大公約數為m且各不相同的數,問有多少中情況。

解題思路:剛開始的時侯用容斥寫,因為對於這個題而言質因子的分布在1到10的5次方,所以就有大概9千多個質數,而我寫的容斥是n^2的,所以就超時,所以這題不能用質因子去容斥,而直接用n的因子,時間複雜度更低。所以n^2的容斥對某乙個數的篩選表現更好,

因為乙個數的質因子很少。後來用莫比烏斯反演寫了一發,果然快多了。f(m)=n/m*(n/m-1)*(n/m-2)。

莫比烏斯反演:

/* ********************************

author : danmu

created time : 2023年04月17日 星期日 23時28分00秒

file name : triple.cpp

vim command

copy -> yy

paste -> p p

del this line -> dd

ctrl-z -> u u

copy into system -> "+y

******************************** */

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ull unsigned long long

#define pi 3.1415926535

#define inf 0x3f3f3f3f

#define ll long long

#define eps 1e-8

#define max 100000

using namespace std;

bool vis[max+10];

int mu[max+10],prime[max+10],cnt;

void mobi(int n)

for(int j=0;j

南京理工大學第八屆程式設計大賽

description input 第一行乙個t,表示t組測試資料。每組測試資料格式如下。第一行表示字串s,第二行表示字串t。1 t 100each character of s,t will be between a and z 1 length of string s 10001 length ...

南京理工大學第八屆程式設計大賽 J water1

思路 水題 include define n 100000 define ll long long define u unsigned using namespace std int cas 1,t int n,h n 10 w n 10 ll ans int main int maxh 0 for...

南京理工大學第八屆程式設計大賽(校外映象)C題

count prime time limit 1000ms memory limit 65536kb description 給定你乙個數n,請你統計出在 a,b 這個區間中和n互質的數的個數。兩個數互質當且僅當他們除了1之外沒有其他的公共因子或者他們最大的公共因子是1。1和任何數是互素的。inpu...