【NOI2016】迴圈之美,mobius反演+杜教篩
阿新 • • 發佈:2018-12-23
思路:
對於
因為
,也就是
我們要求的式子就是
把
(然後我就反演了半天,最後被reflash和mrazer一眼秒了)
因為
關於F函式,因為
(我原本沒預處理,暴力算的,在uoj跑76分,問了reflash才知道可以
前面部分根據d的取值分塊算,現在問題就在於如何快速計算
%一發reflash
(這個我真沒想到,卡在這裡挺久的,因為沒有把
設
則
兩個互質條件合併一下,就是
非常像杜教篩的處理方法,記憶化即可
小範圍的時候可以暴力
程式碼:
#include<cstdio>
#include<iostream>
#define LL long long
#define ui unsigned int
using namespace std;
int gcd(int x,int y){return y?gcd(y,x%y):x;}
int n,m,k;
const int lim=2000000;
int prime[lim/10+5],f[2005],py[2005];
ui pr[2005];
short mu[lim+5],sum[lim+5];
char vis[lim+5];
void init()
{
mu[1]=1;
int