「模擬賽」暑期集訓CSP提高模擬3(7.20)

_yuen發表於2024-07-21

仍在施工...

$165 pts, Rank 18$

B 題掛了 45 分,不然可以 AC 兩道題的,嗚

題目列表:

A.abc猜想

B.簡單的排列最最佳化題

C.簡單的線性做法題

D.簡單的線段樹題

A.abc猜想

題意:

給定三個正整數 \(a,b,c\),你需要求出 \(a^b\) 除以 \(c\) 並向下取整得到的值對 \(c\) 取模的結果。

賽時分析:

大概十天之前 和 \(DrRatio\)\(GGrun\) 玩洛谷隨機跳題做過一道類似且難度大於等於這個的題,開賽沒十秒, GGrun:做過做過這個,於是十分鐘切了。

正解:

\(a^b\) 顯然快速冪,模什麼呢,模 \(c\) 的話之後再 \(\div c\) 結果顯然為 0,所以我們模 \(c^2\)

code:

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll a, b, c;

ll qpow(ll x, ll y, ll mod){
	ll ans = 1;
	while(y)
	{
		if(y & 1) ans = ans * x % mod;
		x = x * x % mod;
		y >>= 1;
	}
	return ans;
}

signed main(){
	// freopen("in.in", "r", stdin); freopen("out.out", "w", stdout);

	scanf("%lld%lld%lld", &a, &b, &c);

	ll ans = qpow(a, b, c * c) / c;
	ans = ans % c;

	printf("%lld", ans);

	return 0;
}

B.簡單的排列最最佳化題

題意:

對長度為 \(n\) 的排列 \(π=(π1,π2,…,πn)\),定義它的權值 \(wt(π)=∑_{i=1}^n∣π_i−i∣\),定義它的 k-移位為新的排列 \(πk=(πn−k+1,πn−k+2,…,πn,π1,…,πn−k)\)。特別的,\(π_0=π\)

現在給定長度為 \(n\) 的排列 \(π\),請找到一個 \(k∈[0,n−1]\),使得 \(wt(πk)\) 最小。

相關文章