【提高组】

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;
}
View Code

 

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;
}
View Code

 

posted @ 2019-10-03 11:53  jian_song  阅读(187)  评论(0编辑  收藏  举报