P2942 [USACO09MAR] Moon moo Moon Mooing

Title Description

A full moon casts some sort of spell on the cows and, like their cousins the wolves and coyotes, they bay at the moon -- mooing instead of howling, of course.

Each 'moo' lasts a certain amount of time. A short 'moo' might last time 1; a longer one might last time 24 or even 1,000,000,000 or longer (cows can really moo when they want to). No 'moo' will last more than or equal to 2^63.

It should come as no surprise that the cows have a pattern to their moos. Bessie will choose an integer c (1 <= c <= 100) that is the initial length of a moo.

After Bessie moos for length c, the cows calculate times for

subsequent moos. They apply two formulae to each moo time to yield even more moo times. The two formulae are:

f1(c)=a1*c/d1+b1 (integer divide, of course) and 
f2(c)=a2*c/d2+b2. 
They then successively use the two new times created by evaluating f1(c) and f2(c) to create even more mooing times. They keep a sorted list of all the possible mooing times (discarding duplicates). 
They are allowed to moo a total of N times (1 <= N <= 4,000,000). Please determine the length of the longest moo before they must quit. 
The constants in the formulae have these constraints: 1 <= d1 < a1; d1 < a1 <= 20; 0 <= b1 <= 20; 1 <= d2 < a2; d2 < a2 <= 20; 0 <= b2 <= 20. 
Consider an example where c=3 and N=10. The constants are: 
a1=4    b1=3     d1=3 
a2=17   b2=8     d2=2 

The first mooing time is 3, given by the value of c. The total list of mooing times is:

1. c=3             ->  3       6. f2(3)=17*3/2+8  -> 33 
2. f1(3)=4*3/3+3   ->  7       7. f1(28)=4*28/3+3 -> 40 
3. f1(7)=4*7/3+3   -> 12       8. f1(33)=4*33/3+3 -> 47 
4. f1(12)=4*12/3+3 -> 19       9. f1(40)=4*40/3+3 -> 56 
5. f1(19)=4*19/3+3 -> 28      10. f1(47)=4*47/3+3 -> 65 
The tenth time is 65, which would be the proper answer for this set of inputs. 

Partial feedback will be provided on the first 50 submissions. MEMORY LIMIT: 64MB

Full moon, and wolves, who also called bovine moonlight. They never cries, but moo.

Every time there is a long-moo, may be 1 second, probably; 10 ^ 9 seconds or more, the cattle were really able to call, of course, no longer will exceed or equal to 2 ^ 63 moo.

After the cow's moo can find the law, it is not surprising. Bessie will choose an integer 100) as an initial duration., More cattle were determined according to the length of two formulas. These two formulas

f1 (c) = a1 * c / d1 + b1 divisible

f2(c)=a2*c/d2+b2.

Cattle were with these two formulas constantly iteration calculation, the calculated large length of time. Then they These long sorting, culling repeat length, and finally take the first N (l <N <4000000) integer for their N times lowing . long you calculate the length of the N-th lowing What equation constants are integers, satisfies the following relationship:. 1 <= d1 <a1; d1 <a1 <= 20; 0 <= b1 <= 20; 1 <= d2 <a2; d2 <a2 <= 20; 0 <= b2 <= 20.

Input Format

* Line 1: Two space-separated integers: c and N

* Line 2: Three space-separated integers: a1, b1, and d1

* Line 3: Three space-separated integers: a2, b2, and d2

Output Format

* Line 1: A single line which contains a single integer which is the length of the Nth moo

Sample input and output

Input # 1
3 10 
4 3 3 
17 8 2 
Output # 1
65 

#include<iostream>
#include<cstdio>
using namespace std;
int n,h,a,b,c,x,y,z,i,j,k;
long long q[4000005],tmpa,tmpb;
int main(){
	scanf("%d %d",&h,&n);
	scanf("%d %d %d",&a,&b,&c);
	scanf("%d %d %d",&x,&y,&z);
	q[1]=h;
	j=k=1;
	for(i=2;i<=n;i++){
		tmpa=1ll*a*q[j]/c+b;
		tmpb=1ll*x*q[k]/z+y;
		if(tmpa==tmpb){
			j++;
			k++;
			q[i]=tmpa;
		}
		else
			if((tmpa>tmpb&&tmpb>0)||tmpa<0){
				k++;
				q[i]=tmpb;
			}
			else
				if((tmpb>tmpa&&tmpa>0)||tmpb<0){
					j++;
					q[i]=tmpa;
				}
	}
	cout<<q[n];
}

  

 

Guess you like

Origin www.cnblogs.com/xiongchongwen/p/11781386.html