題目鏈結
題意:
求n<=1.3*10^7。
題解:
一開始還以為是個模板題,直接用快速冪去求,但是tle了。看了題解才知道,要先篩素數。
因為每個數都可以表示成一些質數相乘,所以我們對於某個合數x,可以表示成 x=x的最小質因子*y。那麼x^n= x的最小質因子^n * y^n。那麼在素數篩的過程就我們就可以求出所有元素的n次方。這樣做可以減少使用快速冪的次數,大大降低了複雜度。
**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define iss ios::sync_with_stdio(false)
using
namespace std;
typedef
unsigned
long
long ull;
typedef
long
long ll;
typedef pair<
int,
int>pii;
const
int maxn=
13e6+5
;const
int mod=
1e9+7;
const
int inf=
0x3f3f3f3f
;int prime[maxn]
;bool is_prime[maxn]
;ll fac[maxn]
;ll fastpow
(ll a, ll b)
//快速冪
return ans;
}void
solve
(int n)
is_prime[0]
=is_prime[1]
=false
;for
(int i=
2;i<=n;i++
)for
(int j=
0;j<=n;j++)}
}int
main()
cout<
}
牛客小白月賽12 華華給月月出題
題意 給乙個n,求1到n i n的異或和。n 1.3e7,顯然只能o n 因為i n是積性函式,所以可以線性篩o n 求出1到n的n次方,然而比賽的時候我寫了個假的線性篩。include using namespace std const int mod 1e9 7 int n bool ispri...
華華和月月種樹(牛客)
題意 華華看書了解到,一起玩養成類的遊戲有助於兩人培養感情。所以他決定和月月一起種一棵樹。因為華華現在也是資訊學高手了,所以他們種的樹是資訊學意義下的。華華和月月一起維護了一棵動態有根樹,每個點有乙個權值。剛開存檔的時候,樹上只有 0 號節點,權值為 0 接下來有兩種操作 操作 1 輸入格式1 i,...
牛客 華華教月月做數學 (快速冪)
華華教月月做數學 這道題屬於快速冪型別的題,唯一棘手的是用常規的快速冪會爆long long,這時候對於沒有大數的c 而言,要麼用手寫大數函式來做,要麼就在快速冪的基礎上,為防止溢位,將快速冪中的乘法拆成加法求餘,類似快速冪的快速乘。include using namespace std typed...