我是不是对题目有什么误解?

P1358 扑克牌

把所有的int换成ull以后变成了30分,如下: ```cpp #include <iostream> #include <cstdio> using namespace std; #define MOD 10007 #define ull unsigned long long ull c(ull n,ull m) { ull ans=1; m=min(m,n-m); for(ull i=0;i<m;++i) ans=(ans*(n-i)/(i+1))%MOD; return ans; } int main() { ull ans = 1,n,m; scanf("%llu%llu",&n,&m); for(ull i=1;i<=m;++i) { ull x; scanf("%llu",&x); ans=(ans*c(n,x))%MOD; n-=x; } printf("%llu\n",ans); return 0; }
by WanderingTrader @ 2020-07-16 12:06:45


我先有个疑惑,为什么你的min可以用long long、、
by fresh_boy @ 2020-07-16 12:11:23


你的c函数有问题,,整数除了之后不是应该保留整数?,然后模了之后的话,(实际是小数)这样的c会产生偏差
by fresh_boy @ 2020-07-16 12:14:22


好像是这样的?~~口胡~~
by fresh_boy @ 2020-07-16 12:15:06


@[唱歌的向日葵](/user/225100) 你这样的c肯定是几个整数相乘,但貌似实际上是几个小数相乘
by fresh_boy @ 2020-07-16 12:15:56


@[唱歌的向日葵](/user/225100) min咋不能用ll。。。
by chenxia25 @ 2020-07-16 12:24:11


@[唱歌的向日葵](/user/225100) min的要求是两个数类型相同
by WanderingTrader @ 2020-07-16 12:33:17


@[唱歌的向日葵](/user/225100) 为什么会有问题呢?边乘边除是可以整除的啊
by WanderingTrader @ 2020-07-16 12:35:29


@[zycany](/user/270791) 对于 `/` 没有同余定理
by Implicit @ 2020-07-16 12:46:52


@[zycany](/user/270791) 为什么我用min取两个longlong报错..
by fresh_boy @ 2020-07-16 16:25:32


| 下一页