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

1a

Posted by astoninfer at 2015-09-17 21:01:50 on Problem 2115
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef __int64 LL;
int k;
LL a, b, c;
LL mod;

LL gcd(LL a, LL b){
	if(!b) return a;
	return gcd(b, a % b);
}

void egcd(LL a, LL b, LL& x, LL& y, LL &d1){
	if(!b){
		d1 = a;
		x = 1, y = 0;
		return;
	}
	egcd(b, a % b, x, y, d1);
	LL t = x;
	x = y;
	y = t - a / b * y;
}

void solve(){
	LL a1 = c, b1 = mod, d1, x, y;
	egcd(c, mod, x, y, d1);
	if((b - a) % d1 != 0){
		puts("FOREVER");
		return;
	}
	x *= (b - a) / d1, y *= (b - a) / d1;
	d1 = b1 / d1;
	if(x < 0) x += ((-x) / d1 + 1) * d1;
	if(x > 0) x -= (x / d1) * d1;
	while(x < 0) x += d1;
	while(x >= d1) x -= d1;
	printf("%I64d\n", x);
}

int main(){
	//freopen("in.txt", "r", stdin);
	while(~scanf("%d%I64d%I64d%I64d", &a, &b, &c, &k) && k){
		mod = (LL)1 << k;
		solve();
	}
	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