0
已解决
栾峻岩
初级天翼
初级天翼
#include <iostream>
using namespace std;
long long int a[1000000],b[1000000];
long long int bisu(int x,int y)
{
int a,b=x,z=0;
long long int sum=1,num=1;
if (x==y)
{
return 1;
}
else
{
for (int i=1;i<=y;i++)
{
if (z>y)
break;
else
{
z++;
sum*=b;
b--;
}
}
for (int i=1;i<=y;i++)
num*=i;
sum/=num;
sum%=10007;
return sum;
}
}
int main()
{
int n;
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a[i]>>b[i];
cout<<bisu(a[i],b[i])<<endl;
}
return 0;
}
//这是代码,40分代码。
题目在这求各位大佬帮忙!谢谢!
题目:
1520 多个组合数
题目描述 Description
有N个任务,每个任务是求一个组合数。
输入描述 Input Description
第一行输入一个正整数N<1000000;第2到第N+1行,每行2个正整数x和y,表示要计算组合数C(x,y),保证x>=y, x<1000。
输出描述 Output Description
N行,每行一个组合数C(x,y),由于答案可能很大,输出答案模10007的结果。
样例输入 Sample Input
3
6 3
10 7
20 8
样例输出 Sample Output
20
120
5886
栾峻岩在2018-09-29 16:53:55追加了内容
改了之后80分(用杨辉三角预处理再输出)
#include <iostream>
using namespace std;
long long int yh[1010][1010];
int main()
{
int n;
cin>>n;
yh[1][1]=1;
yh[2][1]=1;
yh[2][2]=1;
for (int i=3;i<=1000;i++)
{
for (int j=1;j<=i;j++)
{
yh[i][j]=(yh[i-1][j]+yh[i-1][j-1])%10007;
}
}
for (int i=1;i<=n;i++)
{
int x,y;
cin>>x>>y;
cout<<yh[x+1][y+1]<<endl;
}
return 0;
}
3
0
赵逸凡
初级启示者
初级启示者
@徐铭凯 徐天才不要侮辱人家,可能他们正在做那些SSD算法呢,或者是什么2-SAT和传说中的四维数组。
这貌似是一道国外的题或NOI,mod10007好像在哪见过。
看这位大佬的写法,RE好像要高精度或者优化算法
组合数我听不懂,但是输入建议用scanf或者指针字符串(高精度)输入,mod10007也可以用什么高级除法思路(好像是四舍五入的规律)优化一下,例如取10007的因数找规律,如果按陆巨佬的思路来看,我就听不懂了。
0
0
0
0
0
0
0
0