Submission #3462268


Source Code Expand

#include<bits/stdc++.h>
#include<bits/extc++.h>

#define file(s) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout)
#define go(x, i) for(register int i = head[x]; i; i = nxt[i])
#define For(i, a, b) for(register int i = (a), i##_end_ = (b); i <= i##_end_; ++ i)
#define FOR(i, a, b) for(register int i = (a), i##_end_ = (b); i >= i##_end_; -- i)
#define debug(x) cout << #x << " = " << x << endl
#define mem(a, b) memset(a, b, sizeof(a))
#define cpy(a, b) memcpy(a, b, sizeof(a))
#define inf (0x3f3f3f3f)
#define INF (1e18)
#define pb push_back
#define mp make_pair
#define x first
#define y second
#define y1 orzorz

typedef unsigned long long ull;
typedef unsigned int uint;
typedef long long ll;
typedef std::pair<ll, int> PLI;
typedef std::pair<int, int> PII;
typedef long double ldb;
typedef double db;

namespace IO {
#define getc() ((S_ == T_) && (T_ = (S_ = Ch_) + fread(Ch_, 1, Buffsize, stdin), S_ == T_) ? 0 : *S_ ++)
#define putc(x) *nowps ++ = (x)

	const uint Buffsize = 1 << 15, Output = 1 << 23;
	static char Ch_[Buffsize], *S_ = Ch_, *T_ = Ch_;
	static char Out[Output], *nowps = Out;

	inline void flush() {fwrite(Out, 1, nowps - Out, stdout); nowps = Out;}
	template<class T>inline bool chkmax(T &_, T __) {return _ < __ ? _ = __, 1 : 0;}
	template<class T>inline bool chkmin(T &_, T __) {return _ > __ ? _ = __, 1 : 0;}

	template<class T>inline void read(T &_) {
		_ = 0; static char __; T ___ = 1;
		for(__ = getc(); !isdigit(__); __ = getc()) if(__ == '-') ___ = -1;
		for(; isdigit(__); __ = getc()) _ = (_ << 3) + (_ << 1) + (__ ^ 48);
		_ *= ___;
	}

	template<class T>inline void write(T _, char __ = '\n') {
		if(!_) putc('0');
		if(_ < 0) putc('-'), _ = -_;
		static uint sta[111], tp;
		for(tp = 0; _; _ /= 10) sta[++ tp] = _ % 10;
		for(; tp; putc(sta[tp --] ^ 48)); putc(__);
	}

	inline void procStatus() {
		std::ifstream t("/proc/self/status");
		std::cerr << std::string(std::istreambuf_iterator<char>(t), std::istreambuf_iterator<char>());
	}
}

using namespace std;
using namespace IO;

const int N = 1e6 + 10;
const int mod = 1e9 + 7;

map<int, int> num;

int fac[N], inv[N];
int notp[N], prime[N], cnt;

int qpow(int a, int x) {
	int ret = 1; 
	while(x) {
		if(x & 1) ret = (ll)ret * a % mod;
		x >>= 1, a = (ll)a * a % mod;
	}
	return ret;
}

int C(int n, int m) {
	return n < m ? 0 : 1ll * fac[n] * inv[m] % mod * inv[n - m] % mod;
}

void Get_Prime(int n) {
	notp[0] = notp[1] = 1;
	For(i, 2, n) {
		if(!notp[i]) prime[++ cnt] = i;
		For(j, 1, cnt) {
			if(prime[j] * i > n) break;
			notp[prime[j] * i] = 1;
			if(!(i % prime[j])) break;
		}
	}
}

int main() {
#ifdef ylsakioi
	file("AT187");
#endif

	Get_Prime(sqrt(1e9));
	fac[0] = 1;
	For(i, 1, N - 1) fac[i] = 1ll * fac[i - 1] * i % mod;
	inv[N - 1] = qpow(fac[N - 1], mod - 2);
	FOR(i, N - 1, 1) inv[i - 1] = 1ll * inv[i] * i % mod;
	int n, m, flag = 0, ans = 1;
	read(n), read(m), n = abs(n);
	For(j, 1, cnt) if(!(n % prime[j])) {
		int now = 0;
		while(!(n % prime[j])) n /= prime[j], ++ now;
		num[prime[j]] = now;
	}
	if(n ^ 1) num[n] = 1;
	for(auto v : num) ans = 1ll * ans * C(v.y + m - 1, m - 1) % mod;
	write(1ll * ans * qpow(2, m - 1) % mod);
	return flush(), 0;
}

Submission Info

Submission Time
Task D - 表現の自由 ( Freedom of expression )
User luogu_bot1
Language C++14 (GCC 5.4.1)
Score 100
Code Size 3181 Byte
Status AC
Exec Time 14 ms
Memory 12544 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 40
Set Name Test Cases
All 00_max.txt, 00_max2.txt, 00_max3.txt, 00_min.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 01_rnd_20.txt, 01_rnd_21.txt, 01_rnd_22.txt, 01_rnd_23.txt, 01_rnd_24.txt, 01_rnd_25.txt, 01_rnd_26.txt, 01_rnd_27.txt, 01_rnd_28.txt, 01_rnd_29.txt, 04_primes_01.txt, 04_primes_02.txt
Case Name Status Exec Time Memory
00_max.txt AC 13 ms 12544 KB
00_max2.txt AC 13 ms 12544 KB
00_max3.txt AC 13 ms 12544 KB
00_min.txt AC 13 ms 12544 KB
00_sample_01.txt AC 14 ms 12544 KB
00_sample_02.txt AC 13 ms 12544 KB
00_sample_03.txt AC 13 ms 12544 KB
00_sample_04.txt AC 13 ms 12544 KB
01_rnd_00.txt AC 13 ms 12544 KB
01_rnd_01.txt AC 13 ms 12544 KB
01_rnd_02.txt AC 14 ms 12544 KB
01_rnd_03.txt AC 13 ms 12544 KB
01_rnd_04.txt AC 13 ms 12544 KB
01_rnd_05.txt AC 13 ms 12544 KB
01_rnd_06.txt AC 13 ms 12544 KB
01_rnd_07.txt AC 13 ms 12544 KB
01_rnd_08.txt AC 13 ms 12544 KB
01_rnd_09.txt AC 14 ms 12544 KB
01_rnd_10.txt AC 14 ms 12544 KB
01_rnd_11.txt AC 13 ms 12544 KB
01_rnd_12.txt AC 13 ms 12544 KB
01_rnd_13.txt AC 13 ms 12544 KB
01_rnd_14.txt AC 13 ms 12544 KB
01_rnd_15.txt AC 13 ms 12544 KB
01_rnd_16.txt AC 13 ms 12544 KB
01_rnd_17.txt AC 13 ms 12544 KB
01_rnd_18.txt AC 14 ms 12544 KB
01_rnd_19.txt AC 13 ms 12544 KB
01_rnd_20.txt AC 13 ms 12544 KB
01_rnd_21.txt AC 13 ms 12544 KB
01_rnd_22.txt AC 13 ms 12544 KB
01_rnd_23.txt AC 13 ms 12544 KB
01_rnd_24.txt AC 13 ms 12544 KB
01_rnd_25.txt AC 13 ms 12544 KB
01_rnd_26.txt AC 13 ms 12544 KB
01_rnd_27.txt AC 14 ms 12544 KB
01_rnd_28.txt AC 13 ms 12544 KB
01_rnd_29.txt AC 13 ms 12544 KB
04_primes_01.txt AC 13 ms 12544 KB
04_primes_02.txt AC 13 ms 12544 KB