Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

不懂就问,我的答案严格小于2^31,为什么错了

Posted by SteveLee at 2021-08-21 21:13:24
#include<cstdio>
#include<vector>
#define BN long long
template<typename T>void read(T& a) {
	a = 0;
	static char ii, li;
	ii = getchar();
	while(ii > '9' || ii <'0') {
		li = ii;
		ii = getchar();
	}
	while(ii <= '9' && ii >= '0') {
		a = (a<<3) + (a<<1) + (ii ^ 48);
		ii = getchar();
	}
	if(li == '-')a = -a;
	li = ii;
	return;
}
template<typename T, typename ...U>void read(T& a, U& ...b) {
	read(a),read(b...);
}                   //2147483648 我的答案严格小于2^31,它告诉我我错了 
const long long mod = 2147483659;
long long n, m;
std::vector<long long> inv, pinv;
long long tmp, ans;
int cnt;
int main(){
	inv.push_back(1);
	pinv.push_back(1);
	cnt = 2;
	while(1){
		read(n, m);
		if(n == 0)break;
		if(2 * m > n){
			m = n - m;
		}
		for(;cnt <= m; cnt++){
			tmp = mod - (mod / cnt * inv[(mod % cnt) - 1] % mod) % mod;
			inv.push_back(tmp);
			pinv.push_back(pinv.back() * tmp % mod);
		}
		ans = 1;
		for(int i = 1; i <= m; i++, n--){
			ans *= n;
			ans %= mod;
			
		}
		ans *= pinv[m - 1];
		ans %= mod;
		printf("%lld\n", ans);
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator