【題目描述】
小林和亮亮在桃園裡一起玩遊戲。桃園裡的桃樹成行成列,剛好構成乙個n×m
n×mn×
m的矩陣,亮亮在某些桃樹下放置了一些小禮物,要求小林把所有樹下的禮物全部收集起來。小林從左上角的桃樹(1,
1)
(1,1)
(1,1
)出發,走到右下角的桃樹(n,
m)
(n,m)
(n,m
)。他只能沿著路徑向下或者向右走,某些桃樹下有禮物,他必須到達所有有禮物的樹 下並把禮物收集起來。小林在出發前,想請你幫他計算一下,他有多少種不同的走法。由於答案可能很大,你只需要輸出答案模100000000(1
08
)100000000(10^8)
100000
000(
108)
後的值即可。
【輸入格式】
第一行三個整數n,m
n,mn,
m和kk
k。n,
mn,m
n,m表示矩陣的大小,k
kk表示有禮物的桃樹的
棵數。接下來k
kk行,每行兩個整數x,y
x,yx,
y,表示一棵有禮物的桃樹的座標(x,
y)
(x,y)
(x,y)。
【輸出格式】
只有乙個整數,表示不同的走法數模100000000
100000000
100000
000後的值。
【樣例輸入】
5 4 1
2 2
【樣例輸出】
20
【資料規模】
對於30
%30\%
30%的資料,1
<=n
,m
<=30
1<=n,m<=30
1<=n
,m<=3
0;對於100
%100\%
100%
的資料,1
<=n
,m
<
=30000,0
<=k
<
=10000,1
<=x
<=n
,1
<=y
<=m
1<=n,m<=30000,0<=k<=10000,1<=x<=n,1<=y<=m
1<=n
,m<=3
0000
,0<=k
<=1
0000
,1<=x
<=n
,1<=y
<=m
。先將起點(1,
1)
(1,1)
(1,1
)與終點(n,
m)
(n,m)
(n,m
)存入結構體內,再依據x
xx座標從大到小將結構體排序,如果x
xx座標相同則按照y
yy座標從大到小排序。列舉每一點,如果這個點的y
yy座標比上乙個點的y
yy座標要小,說明答案為000。
記a
aa為當前點橫座標與上乙個點橫座標之差,b
bb為當前點縱座標與上乙個點的縱座標之差。一共要走a+b
a+ba+
b步,選取其中的a
aa步橫向走,因此從上乙個點到當前點路線條數為ca+
ba
c_^a
ca+ba
。注意此題的模數不是乙個質數,因此還要進行質因數分解。
一開始做這道題的時候並沒有注意到模數不是質數,因此沒有進行質因數分解,只得了一半的分。
**如下:
#include#define n 10000+10
#define m 60000+10
#define ll long long
using namespace std;
ll n,m,k;
struct nodea[n];
bool v[m];
ll p[m],f[m],cnt,cur;
ll mod=1e8;
ll ans=1;
void prime() }}
ll power(ll a,ll &b)
return ans;
}void calc(ll x,ll v)
ll c(ll x,ll y)
bool cmp(node a,node b)
int main()
ans=(ans*c(x+y,y))%mod; }
printf("%lld",ans);
return 0;
}
質因數分解
題目16 將乙個正整數分解質因數。例如 輸入90,列印出90 2 3 3 5。程式分析 對n進行分解質因數,應先找到乙個最小的質數k,然後按下述步驟完 成 1 如果這個質數恰等於n,則說明分解質因數的過程已經結束,列印出即可。2 如果n k,但n能被k整除,則應列印出k的值,並用n除以k的商,作為新...
質因數分解
短除法 求乙個數分解質因數,要從最小的質數除起,一直除到結果為質數為止。分解質因數的算式的叫短除法 和除法的性質差不多,還可以用來求多個個數的公因式 求 最大公因數的一種方法,也可用來求 最小公倍數。求幾個數最大公因數 的方法,開始時用觀察比較的方法,即 先把每個數的因數找出來,然後再找出公因數,最...
質因數分解
講乙個數分解為幾個質數相乘的結果 int a maxn 用來存質因數 int b maxn 用來存質因數的個數 int main if n 1 不能忘記這一步操作 輸出 第1種寫法 a a a b b b b c c printf 第一種寫法 for int i 1 i tot i else pri...