ps:列舉質因數很容易想到,比賽的時候想到列舉1e8範圍內,果斷寫不出來。其實只需要列舉10000內的質因數就行了,因為對於a來說大於10000的質因數最多乙個。列舉質因數後怎麼確定能消去多少個呢?最容易想到的方法就是模擬了(我是這樣yy的,最壞的情況:10000個 134217728。需要計算 (10000 * 1000 + 27 * 5000)次,10000內有1000多個素數),挺考驗實現能力的。
#include#include#define ll long long
#define p pair#define pp pair>
#define pb push_back
#define pp pop_back
#define lson root << 1
#define inf (int)2e9 + 7
#define rson root << 1 | 1
#define linf (unsigned long long int)1e18
#define mem(arry, in) memset(arry, in, sizeof(arry))
using
namespace
std;
const
int maxn = 20000
;const
int mod = 1000000007
;int
t, n;
inta[maxn], prime[maxn];
vector
p;priority_queue
q;void
inite()
}int
main()
if(t) q.push(t);
}while(q.size() > 1
)
if(q.empty()) continue
;
int x =q.top(); q.pop();
for(int j = 0; j < x; j++) ans = (ans * i) %mod;
}sort(a + 1, a + n + 1
);
for(int i = 1; i < n; i++) if(a[i] == a[i + 1]) a[i] = a[i + 1] = 1
;
for(int i = 1; i <= n; i++) ans = (ans * a[i]) %mod;
cout
<< ans <
}return0;
}
牛妹的遊戲
時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld upd 資料保證不會有兩條控制鏈控制的據點完全相同,也保證不會有某條控制鏈兩端控制的據點相同。牛妹最近沉迷於乙個名為 ingress 的遊戲中 遊戲中,藍綠營兩個對...
牛客練習賽21 B 黑妹的遊戲II
有乙個n m的棋盤,每格仔有非負分數,黑妹先手,每次只能下上乙個人選擇的方格的右方或者下方,黑妹和黑弟都在知道最優策略的情況下,從左上角開始到右下角結束,求黑妹最後獲得的分數減去黑弟的分數差是多少。我們由黑妹先手可得,黑妹一定可以獲得左上角和右下角的分數,我們採用逆向dp的思路。dp i j m i...
牛客練習賽21 黑妹的遊戲 記憶化搜尋
傳送門 非常典型的記憶化搜尋博弈 定義f i j f i j f i j 為從 i,j i,j i,j 開始造成的差值大小 先手 後手 那麼先手希望這個值大,後手希望小 就在各自的回合取max maxma x或取min minmi n即可 include using namespace std in...