zoukankan      html  css  js  c++  java
  • 洛谷P1313 计算系数 数学 数论

    洛谷P1313 计算系数
    数学 数论
    1、首先我们不管这个系数 a b 那么他的系数就是杨辉三角 他那项就是 c(k,n)x^n*y^m
    2、然后现在加了系数 a 和 b ,那么就只要把 a 看做 x中的,然后a与x一样,相当a^n
    3、可以发现,x^n*y^m项的系数一定有一个因数a^n*b^m,所以可以提取出来。
    4、然后关于求C的话由两种方法,一种方法是杨辉三角 这样要 n^2 求 但数据再大点就挂了
    5、然后还可以质因数分解求
    6、我是用费马小定理求逆元做的,因为 mod 别的还行,除法不能直接模,得求逆元
    根据欧拉定理 a^phi(mod) == 1 ( % mod ) ( gcd( a,mod ) == 1
    然后推得费马小定理 a^(mod-1) == 1 ( % mod ) ( gcd( a,mod ) ==1 && mod is prime )
    因为质数的phi 是 n-1 所以 a 的逆元为 a^( mod-2) a*a^(mod-1) ==1 (% mod )
    7、这样逆元求出来就可以求答案了

    PS a 与 b 可能一开始就已经超过 mod了,然后乘一下就爆 int 了,所以需要一开始就要 % mod
    否则会炸

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 #include <cstdlib>
     5 #include <string>
     6 #include <algorithm>
     7 #include <iomanip>
     8 #include <iostream> 
     9 using namespace std ; 
    10 
    11 const int mod = 10007,mod2 = 10006 ; 
    12 int a,b,k,n,m,ans ; 
    13 
    14 inline int ksm(int base,int ind) 
    15 {
    16     int a[32],num = 0,sum = 1  ; 
    17     while(ind) 
    18     {
    19         a[++num] = ind&1 ;
    20         ind/=2 ; 
    21     } 
    22     for(int i=num;i;i--) 
    23     {
    24         sum = sum*sum % mod ;
    25         if( a[ i ] ) sum = sum*base % mod ; 
    26     }
    27     return sum ;     
    28     
    29 }
    30 
    31 int main() 
    32 {
    33     scanf("%d%d%d%d%d",&a,&b,&k,&n,&m ) ; 
    34     a%=mod;  b%=mod ; 
    35     ans = 1 ; 
    36     for(int i=2;i<=k;i++) ans = ans*i % mod ;  
    37     for(int i=2;i<=n;i++) ans = ( ans*ksm(i,mod-2) ) % mod ;  
    38     for(int i=2;i<=m;i++) ans = ( ans*ksm(i,mod-2) ) % mod ; 
    39     ans = ( ans*ksm( a,n ) % mod ) *ksm( b,m ) % mod ; 
    40     printf("%d
    ",ans) ; 
    41     
    42     return 0 ; 
    43 } 
  • 相关阅读:
    ihaiLjEUSx
    表达式的逆波兰式转化模板
    运算表达式求值模板
    程序员花式拜年脚本
    vbs脚本实现自动打字祝福&搞笑
    MFC实现红黑砖块
    vbs脚本实现qq定时发消息(初级)
    打包java程序生成exe
    webpack配置
    vue路由
  • 原文地址:https://www.cnblogs.com/third2333/p/7017093.html
Copyright © 2011-2022 走看看