【提高组】
P1414 又是毕业季II
枚举显然会超时,考虑把每个数的因数出现的次数先处理出来,枚举1~n的人数,输出出现次数与要求人数相等的最大的(公)因数。
View Code
P1134 阶乘问题
题解都很玄学的亚子,唯一一个比较好理解的(尽管仍然玄学)的思路就是多保留几位避免误差又不超长度。
TLE了两个点但不重要。
#include<bits/stdc++.h> #define ll long long using namespace std; int n,m,p=1e8; ll ans=1; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { ans*=i%p; ans%=p; while(!(ans%10)) ans/=10; } printf("%d",ans%10); return 0; }
P1313 计算系数
主要靠手推出杨辉三角+对应位置+a、b的计算方式。杨辉三角打表已放进模板。
#include<bits/stdc++.h> #define For(i,l,r) for(int i=l;i<=r;i++) #define ll long long using namespace std; const int M=2019; ll a,b,k,n,m,g[M][M],p=10007; inline void YHSJ(){ g[1][1]=1; For(i,2,k+1) For(j,1,i) g[i][j]=(g[i-1][j-1]%p+g[i-1][j]%p)%p; } inline ll ksm(ll a,ll b){ ll ans=1; while(b){ if(b&1) ans=ans*a%p; a=a*a%p; b>>=1; } return ans; } int main(){ scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m); YHSJ(); printf("%lld",((((g[k+1][k-n+1]%p)*ksm(a,n))%p)*ksm(b,m))%p); return 0; }