网站开发综合实训报告,域名网站有哪些,免费做背景调查的网站,hexo做网站【题目描述】 商店里出售n种花#xff0c;现打算购买m支花#xff0c;每种花最多购买1支#xff0c;询问有多少种购买方案#xff0c;输出方案数 mod p的值。 【输入描述】 输入三个整数n、m、p。 【输出描述】 输出一个整数#xff0c;表示答案。 【输入样例】 4 2 5 【输…【题目描述】 商店里出售n种花现打算购买m支花每种花最多购买1支询问有多少种购买方案输出方案数 mod p的值。 【输入描述】 输入三个整数n、m、p。 【输出描述】 输出一个整数表示答案。 【输入样例】 4 2 5 【输出样例】 1 【数据范围及提示】 样例中若用数字1、2、3、4来表示花的种类4种花里购买各不相同的2支的方案有(1,2)、(1,3)、(1,4)、(2,3)、(2,4)、(3,4)共6种方案模5后为1。 对于30%的数据n,m ≤ 10 对于50%的数据n,m ≤ 1000 对于80%的数据1 ≤ m ≤n ≤ 50000 对于100%的数据1 ≤ m ≤ n ≤ 1000000p ≤ 1000000000。 源代码#includecstdio
#includecmath
#define LL long long
LL m,n,INF,Num(0),Ans1,Sum[350000]{0},Prime[350000];
bool Vis[1000001]{0};
LL Count(LL S,LL X)
{LL Number1;while (S){if (S1)NumberNumber*X%INF;XX*X%INF;S1;}return Number;
}
void Euler()
{LL tn;for (LL a2;at;a){if (!Vis[a])Prime[Num]a;for (LL b0;bNuma*Prime[b]t;b){Vis[a*Prime[b]]true;if (!(a%Prime[b]))break;}}
}
int main() //老办法。
{scanf(%lld%lld%lld,n,m,INF);Euler();for (LL a0;aNum;a){LL tn;while (t){Sum[a]t/Prime[a];t/Prime[a];}}n-m;for (LL a0;aNum;a){LL tn;while (t){Sum[a]-t/Prime[a];t/Prime[a];}}for (LL a0;aNum;a){LL tm;while (t){Sum[a]-t/Prime[a];t/Prime[a];}}for (LL a0;aNum;a)if (Sum[a])AnsCount(Sum[a],Prime[a])%INF*Ans%INF;printf(%lld,Ans);return 0;
} 转载于:https://www.cnblogs.com/Ackermann/p/5968856.html