Paul is right, the strings are small enough. I'm sorry I didn't read the lengths before.
In this case you have only to do the same thing that you have done with the other string and compare the mod 47 results. What I posted would've been needed for longer strings, since it will still be useful in other problems I'll explain further. Suppose that instead of 6 they could be much longer, say 100. In this case you can't compute 26^100 first and then take the number modulo 47. But you can use modular arithmetic. 26^100 mod 47 = (26 * 26^99) mod 47 = ((26 mod 47) * (26^99 mod 47)) mod 47 Going like this, you can see that v=1; for i = 1 to 100 v = v * a[i]; v = v mod 47; Is equivalent to v=1; for i = 1 to 100 v = (v * (a[i] mod 47)) mod 47; But the first one may overflow, it is possible to let it overflow and fix it only at the end, but that's just messier and has arguably very little gain. In the second version, the numbers being multiplied are always between 0 and 46, inclusive. That means the biggest number needed at any time is 46^2. For this problem it isn't needed, but I still hope this helps. If it doesn't make much sense, take into account that this is an important subject in both programming contests and real life, so forgive me my lousy explanation but go learn it anyway, Carlos Guia On Aug 25, 2012 7:21 AM, "Paul Smith" <[email protected]> wrote: > But the comet has a max length of 6 characters, so the worst case is > ZZZZZZ = 26^6 which I think fits in a 32 bit int. There's nothing clever > needed here, you can just program this in a very straightforward manner. > Literally do what the problem tells you to do :) > > Paul Smith > > [email protected] > > > On Sat, Aug 25, 2012 at 12:05 PM, Joseph DeVincentis <[email protected]>wrote: > >> You have the product, although you have only done it for one string so >> far. The problem tells you how to get the mod 47 value; this is in fact >> such a common operation in computing that your language has an operator to >> perform it. >> >> If your numbers are small, you just have to compare the mod 47 values and >> print the output. The problem you are going to encounter is when the comet >> has a name like ZZZZZZZZYZX. That is where you need the help Carlos gave >> about how modular arithmetic applies to multiplication. >> >> On Sat, Aug 25, 2012 at 1:02 AM, Bonethug <[email protected]> wrote: >> >>> @Carlos need a more detailed explanation, like where do we use the rings >>> of congruence, how does it solve my problem here? >>> >>> >>> On Saturday, August 25, 2012 12:50:35 AM UTC+5:30, Bonethug wrote: >>>> >>>> I am having a problem here, this is the question, this is how far i >>>> got, is there a better way to do this?? >>>> >>>> >>>> It is a well-known fact that behind every good comet is a UFO. These >>>> UFOs often come to collect loyal supporters from here on Earth. >>>> Unfortunately, they only have room to pick up one group of followers on >>>> each trip. They do, however, let the groups know ahead of time which will >>>> be picked up for each comet by a clever scheme: they pick a name for the >>>> comet which, along with the name of the group, can be used to determine if >>>> it is a particular group's turn to go (who do you think names the comets?). >>>> The details of the matching scheme are given below; your job is to write a >>>> program which takes the names of a group and a comet and then determines >>>> whether the group should go with the UFO behind that comet. >>>> >>>> Both the name of the group and the name of the comet are converted into >>>> a number in the following manner: the final number is just the product of >>>> all the letters in the name, where "A" is 1 and "Z" is 26. For instance, >>>> the group "USACO" would be 21 * 19 * 1 * 3 * 15 = 17955. If the group's >>>> number mod 47 is the same as the comet's number mod 47, then you need to >>>> tell the group to get ready! (Remember that "a mod b" is the remainder left >>>> over after dividing a by b; 34 mod 10 is 4.) >>>> >>>> Write a program which reads in the name of the comet and the name of >>>> the group and figures out whether according to the above scheme the names >>>> are a match, printing "GO" if they match and "STAY" if not. The names of >>>> the groups and the comets will be a string of capital letters with no >>>> spaces or punctuation, up to 6 characters long. >>>> >>>> Examples: >>>> >>>> InputOutput >>>> >>>> COMETQ >>>> HVNGAT >>>> >>>> GO >>>> >>>> ABSTAR >>>> USACO >>>> >>>> STAY >>>> >>>> PROGRAM NAME: rideThis means that you fill in your header with: >>>> PROG: rideINPUT FORMAT Line 1:An upper case character string of length >>>> 1..6 that is the name of the comet.Line 2:An upper case character >>>> string of length 1..6 that is the name of the group. >>>> >>>> *NOTE*: The input file has a newline at the end of each line but does >>>> not have a "return". Sometimes, programmers code for the Windows paradigm >>>> of "return" followed by "newline"; don't do that! Use simple input routines >>>> like "readln" (for Pascal) and, for C/C++, "fscanf" and "fid>>string". >>>> SAMPLE INPUT (file ride.in) >>>> >>>> COMETQ >>>> HVNGAT >>>> >>>> OUTPUT FORMATA single line containing either the word "GO" or the word >>>> "STAY". SAMPLE OUTPUT (file ride.out) >>>> >>>> GO >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Google Code Jam" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msg/google-code/-/m4ulgyKfgOEJ. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Google Code Jam" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > You received this message because you are subscribed to the Google Groups > "Google Code Jam" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "Google Code Jam" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
