zoukankan      html  css  js  c++  java
  • SRM-16 A-1

    描述

         问从(0,0)出发每一步可以向上走或者向右走,走到(n,m)的方案数有多少种?

    输入格式

         两个用空格隔开的整数n和m (mod 1e9+7)。

    输出格式

         一个整数,表示方案数。

    样例输入

    1 2

    样例输出

    3

    数据范围与约定

    • 对于100%的数据: n <= 1e5, m <= 1e5

    样例解释

         1 先向右走,然后一直往上走

         2 先往上走,再往右走,最后再往上

         3 先一直往上走,再往右走

    快速幂求逆元;

    #include<cstdio>
    #include<cstring>
    const int mod=1e9+7;
    long long aa[200010];
    int phi;
    long long int poww(long long int a)
    {
        int b=phi-1;
        long long ans=1;
        while(b) 
        {
            if(b&1) ans=ans*a%mod;
            b=b>>1;
            a=a*a%mod;
        }
        return ans;
    }
    int getphi(int x)
    {
        int sum=x;
        for(int i=2;i*i<=x;i++)
        {
            if(x%i==0)
            {
                sum=sum/i*(i-1);
                while(x%i==0) x/=i;
            }
        }
        if(x>1) sum=sum/x*(x-1);
        return sum;
    }
    int main()
    {
        int n,m;
        scanf("%d %d",&n,&m);
        if(n<=0||m<=0) 
        {
            printf("0
    ");
            return 0;
        }
        aa[1]=1;aa[0]=1;
        for(int i=2;i<=n+m+1;i++) aa[i]=aa[i-1]*i%mod;
        int t=mod;
        phi=getphi(t);
    //    printf("%d-----",phi);
    //    for(int i=1;i<=n+m;i++) printf("%d ",aa[i]); 
    //    ans=poww(n,m);
    //    printf("%d",ans);
        long long ans=aa[n+m];
    //    printf("%d",ans);
        ans=ans*poww(aa[m])%mod*poww(aa[n])%mod;
        printf("%lld",(ans+mod)%mod);
        return 0;
    }
    View Code

     求phi函数;//其实不用,1e9+7是质数;嘻嘻

    #include<cstdio>
    int getphi(int x)
    {
        int sum=x;
        for(int i=2;i*i<=x;i++)
        {
            if(x%i==0)
            {
                sum=sum/i*(i-1);
                while(x%i==0) x/=i;
            }
        }
        if(x>1) sum=sum/x*(x-1);
        return sum;
    }
    int main()
    {
        int n;
        scanf("%d",&n);
        if(n==1)
        {
            printf("1");
            return 0;
        }
        int ans=getphi(n);
        printf("%d",ans);
        return 0;
    }
    View Code
  • 相关阅读:
    Brettle.Web.NeatUpload.dll支持的大文件上传
    流媒体服务器架设(转载)
    Photoshop用户必知必会的28个快捷键
    qq服务器Ip
    环球企业家:web2.0创业时代将终结
    真传丹道小周天功.txt
    如何解决管理工具MSC拒绝访问?
    photoshop快捷键大全
    利用ffmpeg把视频文件转换为flv文件
    编写高性能 Web 应用程序的 10 个技巧 转自微软资料
  • 原文地址:https://www.cnblogs.com/12fs/p/7574779.html
Copyright © 2011-2022 走看看