hdu 5698 瞬間移動 【質因數分解求組合數】
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=5698
Problem Description
有一個無限大的矩形,初始時你在左上角(即第一行第一列),每次你都可以選擇一個右下方格子,並瞬移過去(如從下圖中的紅色格子能直接瞬移到藍色格子),求到第nnn行第mmm列的格子有幾種方案,答案對100000000710000000071000000007取模。
Input
多組測試資料。
兩個整數n,m(2≤n,m≤100000)n,m(2\leq n,m\leq 100000)n,m(2≤n,m≤100000)
Output
一個整數表示答案
Sample Input
4 5
Sample Output
10
首先找規律發現ans[x][y]=ans[x-1][y]+ans[x][y-1], 類似楊輝三角,所以就是組合數加取模;
上面是楊輝三角公式;
這道題範圍在1e5 以內,需要用質因數分解法求組合數,推薦一篇模板部落格;
自己的AC程式碼:
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<math.h>
#include<map>
#include<set>
#include<queue>
#include<vector>
#include<stack>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const double pi=acos(-1.0);
const ll mod=1e9+7;
const int N=1e4+10;
map<int,ll>m;
map<int,ll>::iterator it;
void fun(int n,int k)
{
for(int i=2;i<=sqrt(n);i++)
{
while(n%i==0)
{
n/=i;
m[i]+=k;
}
}
if(n>1) m[n]+=k;
}
ll quick_pow(int n,int b)
{
ll res=1,tmp=n;
while(b)
{
if(b&1) res=tmp*res%mod;
tmp=tmp*tmp%mod;
b/=2;
}
return res;
}
void solve(ll a,ll b)
{
m.clear();
b=min(a-b,b);
for(int i=0;i<b;i++)
{
fun(a-i,1);
}
for(int i=1;i<=b;i++)
{
fun(i,-1);
}
ll ans=1;
for(it=m.begin();it!=m.end();it++)
{
if(it->second!=0)
{
ans=ans*quick_pow(it->first,it->second);
ans%=mod;
}
}
printf("%lld\n",ans);
}
int main()
{
ll n,m;
while(~scanf("%lld %lld",&n,&m))
{
solve(n+m-4,m-2);
}
return 0;
}
相關文章
- 【hdu】口算訓練/二分/質因數分解
- HDU 4135 Co-prime(容斥原理+分解質因數)
- 階乘質因數分解
- 分解質因數的誤區
- P1075 [NOIP2012 普及組] 質因數分解
- 求最大質因數
- Just for fun——分解一個正整數的質因數
- 瞬間移動
- python將輸入的一個正整數分解質因數(map)Python
- 第六章 數學問題 -------- 6.12 素數及質因數分解
- 藍橋杯題庫 BASIC-16 分解質因數
- 質數判斷、質因子分解、質數篩
- C# 輸入一個整數,求質因數C#
- 大質數分解模板
- Java分解質因數,如輸入8,輸出8=2*2*2Java
- HDU-1792-( 兩個互質的數線性組合最大不能表示的數和不能表示數的個數)
- HDU 2068 RPG的錯排 (錯排+組合數)
- 第七章:因數分解與算數基本定理(1)
- 第七章:因數分解與算數基本定理(2)
- 【快速因數分解】Pollard's Rho 演算法演算法
- HDU 1792 - A New Change Problem(規律,最大不能組合數及其個數)
- python怎麼求因數Python
- 【數學】組合數學 - 排列組合
- 【dp+組合數學】hdu 2018 多校第九場 1001 Rikka with Nash Equilibrium hdu 6415UI
- 求陣列中k個數的所有組合陣列
- 南沙信奧塞陳老師解一本通題:2032:【例4.18】分解質因數
- 篩選法求質數
- 分解質因數——MOOC《零基礎學Java語言》第7周程式設計題1Java程式設計
- 組合數學
- 【數學】組合數學 - 卡特蘭數
- 醜數,即只包含質因數 2、3 和 5 的正整數。
- 組合數字首和
- lg組合計數
- 組合數問題
- Codeforces1420 D. Rescue Nibel!(區間,組合數)
- 因數分解演算法、週期查詢演算法(簡化)演算法
- 微課|中學生可以這樣學Python(例6.4):因數分解Python
- 用python3求一個正數的因式分解Python