题目描述
在石门中学的oj网站上有一条题目是这样的:
在一条数轴上,从0至N共有N+1个整点,分别是:0,1,2,3,4,...N。有K头奶牛,每头奶牛选择一个整点作为它们的家,但它们不能选择相同的整点。为了方便联络,住得最远的那两头奶牛的距离必须等于D。问有多少种不同的方案?
出题人觉得这题不错,于是把这题给大家做,但为了降低难度,于是把上面的题目做了一个改变:K=3,即只有3头奶牛。
输入格式
一行,两个正整数,N 和 D。
数据范围
- 对于50%的数据, 1<=N<=100,2<=D<=N。
- 对于100%的数据,1<=N<=500000,2<=D<=N。
输出格式
一个整数。
样例
输入数据 1
2 2
Copy
输出数据 1
6
Copy
输入数据 2
5 3
Copy
输出数据 2
36
Copy
输入数据 3
500000 20000
Copy
输出数据 3
57597239994
Copy
样例解释
样例 1 说明:
- 方案1:奶牛A选择整点0,奶牛B选择整点1,奶牛C选择整点2。
- 方案2:奶牛A选择整点0,奶牛C选择整点1,奶牛B选择整点2。
- 方案3:奶牛B选择整点0,奶牛A选择整点1,奶牛C选择整点2。
- 方案4:奶牛B选择整点0,奶牛C选择整点1,奶牛A选择整点2。
- 方案5:奶牛C选择整点0,奶牛A选择整点1,奶牛B选择整点2。
- 方案6:奶牛C选择整点0,奶牛B选择整点1,奶牛A选择整点2。
温馨提示
答案可能较大,建议读入的变量N、D以及程序中你用到的其他变量,都定义为long long类型。
#include<bits/stdc++.h>//嘿嘿~
using namespace std;//嘿嘿~
long long n,m,s;//嘿嘿~
int main(){//嘿嘿~
cin>>n>>m;//嘿嘿~
for(int i=0;i<=n-m;i++){//嘿嘿~
s+=(m-1)*6;//排列组合剩下的两个数
}//嘿嘿~
cout<<s;//嘿嘿~
return 0;
}