### removed1's blog

By removed1, 13 years ago, translation, Problem A.

The constraint that edges of each flagstone much be parralel to edges of the square allows to analyze X and Y axes separately, that is, how many segments of length 'a' are needed to cover segment of length 'm' and 'n' -- and take product of these two quantities. Answer = ceil(m/a) * ceil(n/a), where ceil(x) is the least integer which is above or equal to x. Using integers only, it is usually written as ((m+a-1)/a)*((n+a-1)/a). Note that answer may be as large as 10^18, which does not fit in 32-bit integer.

Most difficulties, if any, contestants had with data types and operator priority, which are highly dependant on language used, so they are not covered here.

Problem B.

Let each letter representation of column number be associated with integer in radix-26, where 'A' = 0, 'B' = 1 ... 'Z'=25. Then, when converting letter representation to decimal representation, we take associated integer and add one plus quantity of valid all letter representations which are shorter than letter representation being converted. When converting from decimal representation to letter representation, we have to decide how many letters do we need. Easiest way to do this is to subtract one from number, then quantity of letter representation having length 1, then 2, then 3, and so on, until next subtraction would have produced negative result. At that point, the reduced number is the one which must be written using defined association with fixed number  of digits, with leading zeroes (i.e. 'A's) as needed.

Note that there is other ways to do the same which produce more compact code, but they are more error-prone as well.

Problem C.

The points can be vertices of regular N-polygon, if, and only if, for each pair, difference of their polar angles (as viewed from center of polygon) is a multiple of 2*pi/N. All points should lie on the circle with same center as the polygon. We can locate the center of polygon/circle [but we may avoid this, as a chord (like, say, (x1,y1)-(x2,y2)) is seen at twice greater angle from center, than it is seen from other point of a cricle (x3,y3)]. There are many ways to locate center of circle, the way I used is to build midpoint perpendiculares to segments (x1,y1)-(x2,y2) and (x2,y2)-(x3,y3) in form y = a*x + b and find their intersection. Formula y = a*x + b has drawback that it cannot be used if line is parallel to y, possible workaround is to rotate all points by random angle (using formulae x' = x*cos(a) - y*sin(a), y' = y*cos(a) + x*sin(a) ) until no segments are horizontal (and hence no perperdiculares are vertical).

After the coordinates of the center are known, we use fancy function atan2, which returns angle in right quadrant: a[i] = atan2(y[i]-ycenter, x[i]-xcenter)

Area of  regular polygon increases with increasing N, so it is possible just to iterate through all possible values on N in ascending order, and exit from cycle as first satisfying N is found.

Using sin(x) is makes it easy: sin(x) = 0 when x is mutiple of pi. So, for points to belong to regular, N-polygon,

sin( N * (a[i]-a[j]) /2 )=0

because of finite precision arithmetic,

fabs( sin( N * (a[i]-a[j]) /2 ) ) < eps Tutorial of Codeforces Beta Round #1  Comments (57)
| Write comment?
 You can use TeX for the mathematical formulas.
•  How?
•  frac{x}{y} = 3 frac{x}{y} = 3 for example.
•  oops..  •  How do you expect me to guess which source code did you write?
•  (shift+4)\frac{x}{y}(shift+4)
• •  $\frac{sounds}{fun}$
•  $\frac{test}{ing}$
 Problem B.I can't pass Test case 6.I don't konw why? Isn't there a test case like:Input: R001C001Ouput: 00A001?
•  My AC program give A001
•  No leading zeros needed. "A1" is correct.
•  R288C494 check this input. (Tricky one :D)
•  It is "RZ288".
•  You cannot have zeros in letter numbering. "00A" is incorrect, it should be only "A". "001" is not incorrect, but the leading zeros are unnecessary, it can be simply "1". I doubt though that there are numbers with leading zeros in the official test cases, it is simply "R1C1" or "A1".
 Who can give me the data on test 6？Why I always get WA、
•  test 6 is very big (1000 lines)try to check this test instead:13R1C17R1C18R1C19R1C20R1C21R1C22R1C23R1C24R1C25R1C26R1C27R1C28R1C29after passing this I got AC.
•  This is what I got,Q1R1S1T1U1V1W1X1Y1Z1AA1AB1AC1Which i believe is the correct solution. But it still wouldnt pass test 6 :(
•  My program that got AC says "R288C494".
•  This is correct.
•  » » That is incorrect. The correct answer is "KOYZ1". The cell is obviously in row 1.
•  » » » -#,long long ago !
•  » » » » 9 years ago, # ^ | ← Rev. 2 →   So what?
 » When I use ceil((float)N/A) for problem 1A, it gives wrong answer while it gives a correct answer when I use ((N+A-1)/A). What is the catch behind it?
•  » » Use double, Luke
•  » » float has very low precision. Best stay away from it, use double.
 » Hello :) How do I represent 10^9 integers and input integers separated by space in a single line in C language?
•  » » For integers up to 10^9, you can use the 32-bit integral type long int. But if you multiply them, you have to use a 64-bit type, like long long int, otherwise the multiplication will overflow.As for input, the proper way to input a 32-bit integer on Codeforces isscanf ("%ld", & integer);and for a 64-bit integerscanf ("%I64d", & integer);
 » Can someone help me in problem 1B ? 1B - Spreadsheetexcept this one "R1C204152" answer:"KOYZ169801", all the test cases which users gave in comments run on my machine. Help me please
•  » » The correct answer to the test case "R1C204152" is "KOYZ1". The cell is obviously in row 1. I got AC on this problem today.
•  » » » Okay I mended my one as well to get KOYZ1 but still it fails test 6. Wanna see my code ?
•  » » » » Yes, please.
•  » » » » » 3 months ago, # ^ | ← Rev. 2 →   Would you please have a look at my code for this? My program gives correct answer for all the above comments, still fails TC6. Edit : Source Code link : https://pastebin.com/ckrWKDN3
•  » » » » » » For anyone whose code gives RTE on TC 6, I will give you a hint to check the test case RC1, it might be missing that edge case.My AC Code for B : https://pastebin.com/nGdrrLpm
 » I have been trying 1B. But getting Runtime error. Here other people also have said same but no reason mentioned. Please suggest me what's wrong.
•  » » Try this cell: R1
 » Problem B. My submission: here WA on test 6, but I can't trace this big test case. Can anyone help me with a one that can be traced and hacks my code? Thanks in advance.
•  » » 8 years ago, # ^ | ← Rev. 3 →   Have you scrolled to the bottom of the submission report? 1 R228C494 
 » I can't solve problem A, please help me. I was using a 2D-Segment Tree to simulate the squares, but I got WA. I need help. If you help me, I'll give you a big hug.
•  » » Tip: Solve the problem first in one dimension. Look for an analytical solution of the problem, no advanced data structures are needed.
 » Please help: Why I'm getting a different output on different systems for Problem B sample test cases?On my system: On CF system: My submission: 16392041
•  » » pow pow pow... How many bugs with it. Write your own function.
•  » » Did you get correct result .me also facing same problem.
 » Why is this C++ solution fails on 9th test #include using namespace std; int main() { int n, m, a; cin >> n >> m >> a; int answer = ((n+a-1)/a)*((m+a-1)/a); cout << answer; return 0; } But this Python solution is correct? n, m, a = map(int, input().split()) answer = ((n+a-1)//a)*((m+a-1)//a) print(answer) 
•  » » same brother did you find any solution to it and why it is not giving right on 9th test case can you explain me ??/
•  » » » The answer can get up to 10^18 so it needs to be the variable needs to be ll instead of int
 » what datatype can i use to this big number in java? numbre: 1000000000000000000
•  » »
•  » » » i try to multiplicate 1000000000X1000000000 and i want that the result was 10000000000000000000, but when i try do this operation in java, the answer of the multiplication give me how result this number -1486618624 whit datatype long and int and BigInteger.
•  » » » » You have to store 1000000000 in a long also, if you want to make operations on it which makes it become a long. You can cast it meanwhile operation too, so you can do ((long) 10000000000)*10000000000, and it will give correct result.Long can handle numbers up to 9*10^18, for numbers bigger than that you need to use BigInteger.
 » I found another solution for B here is my code: 33646284
 » can someone help me with the concept of epsilon in finding the gcd. Why do most of the accepted answers have it as 10^-4 . when i reduce it to 10^-5 , i get incorrect answer. Can someone tell me how did we decide this value because i think that lesser the value of eps meant a more precise answer??
 » can anyone explain me why my code is not passing testcase 6. https://codeforces.com/contest/1/submission/58648097
 » 11 months ago, # | ← Rev. 2 →   Problem — B. Spreadsheets Simplest Solution Approach C++1.) Task 1 : Divide String into 4 Parts : Part 1 [String] $P_1$ Number 1 $N_1$ Part 2 [String] $P_2$ Number 2 $N_2$ 2.) Task 2 [CASE 1] : If the Part 2 [String] OR Number 2 Does Not Exist, Then You can Simply Reverse the $P_1$ and consider as Binary in Terms of Power of 26.3.) Task 2 [CASE 2] : [Tricky] All $P_1$, $N_1$, $P_2$ & $N_2$ are Present. - Convert $N_2$ to Number. - Convert Number to String using Opposite of Above Process [Decimal to Binary Sort of]. - Import Mistake for Edge Case when the $N_2$ is Divisible by 26. 4.) Implementation C++ Implementationvoid solve() { string s; cin >> s; ll n = s.length(); string p1, p2; string n1, n2; for (ll i = 0; i < n; i++) { if (s[i] >= '0' && s[i] <= '9') { if (p2.length() == 0) n1 += s[i]; else n2 += s[i]; } else { if (n1.length() == 0) p1 += s[i]; else p2 += s[i]; } } // cout << p1 << " " << p2 << endl; // cout << n1 << " " << n2 << endl; if (p2.length() == 0 || n2.length() == 0) { ll pow26 = 1; ll ans = 0; reverse(all(p1)); for (auto &ch : p1) { ans += ll(ch - 'A' + 1) * pow26; pow26 *= 26; } cout << "R" << n1 << "C" << ans << endl; } else { ll num = stoll(n2); ll pow26 = 1; ll ans = 0; string fans; while (num) { ll r = num % 26; if (r == 0) r = 26; fans += (char)('A' + (r - 1)); num /= 26; // Very Important Mistake [#TC : R140C494 -> RZ140] if (r == 26) num--; } reverse(all(fans)); cout << fans << n1 << endl; } return; } Do Upvote this Comment, If it was Helpful!