Petr is my former same year student at the Department of Mathematics of Moscow State University. He was somewhat like a personal coach for me after his two ACM ICPC finals when his ACM career formally ended. We also worked together for 2 years in the Moscow office of Google, and we rented a flat together during those 2 years, so I know him relatively well.
I would definitely support the point of the Aditya's answer about his humbleness. Petr is very modest, and he actually doesn't like all this super-popularity with Facebook page created about him, etc. He is very polite and doesn't ever show off in any way. No one in the competitive programming can pass without these trash talk conversations like "(yellow coder) - Oh, I'm a fool: I had to resubmit my 250-point. (red coder) - Oh, I'm a fool: I've fixed my hard in 30 seconds after the end of the coding phase. (Petr) - Oh, I'm a fool: I've missed 2 valid challenges on the easy problem in my room" - this being said after him solving all three and winning an SRM or maybe taking the 2nd place. This could seem like mocking from the side, but actually is just sincere analysis of oneself's mistakes during the round. It's just that mistakes are currently on very different levels for those people.
I can definitely oppose Petr as a winner of all imaginable programming competitions to many respective winners of all imaginable mathematical competitions in that he can be much more social person, he is easy to communicate with and he is definitely not a super-nerdy person you would expect after meeting "strange mathematicians", watching some Hollywood movies or just remembering your nerdy classmate. He is still not a spokesperson or something, but he is a completely usual guy for a stranger.
Petr is very good in strategic board games. We were fond of playing Settlers of Catan and played probably several hundreds of times, and he was the winner around 2/3 of times which is impressive given a 3-4 players game and given quite sophisticated opponents. We also play "swedish chess" (actually "bughouse" in English, but the bughouse has slightly different rules), "Carcasson", "Ticket to Ride" and others. It is much more doable to beat Petr in one of these than to beat him in a programming contest, but it's hard.
Petr is one of the competitive programmers with really strong mathematical thinking. There are different paradigms in the ACM world, including "It got accepted ==> the algorithm is correct", but seems like Petr almost never submits any solution without having a rigorous proof even when good mathematical intuition is enough and the proof is hard. Which I would argue is a necessary trait for a top competitor, as the worst thing you could do at the contest is implement a wrong solution.
Petr is (obviously) very good at algorithmic problem-solving. While I can (or at least could) beat him at the mathematical-olympiads-sp
ecific problems, there are only certain few classes of algorithmic problems I could sometimes solve theoretically faster than him, and in the general case he is much faster. He has a super-developed intuition in the area: the same thing that distinguishes the winners of mathematical olympiads, but applied to algorithmic problems instead of usual mathematical problems. So even if you are very good at coding, writing bug-free code and debugging, as soon as problems are hard enough he'll still beat you because of the speed in theoretical problem solving. Due to his strong mathematical background, he is no intimidated by non-standard problems, which are rare in the competitions IMHO, but the most complex are always non-standard. Petr likes the problems that can be expressed in 1-2 simple sentences but are very hard to solve the most.
The one thing other than very fast problem-solving on the maths level that really distinguishes Petr from other competitors is the depth of understanding of his algorithm and his programs. It is hard to explain, but it is the core reason he either doesn't make a bug or finds it on order of magnitude faster than other top competitors. He doesn't really have to do step-by-step debugging at all: it is either obvious to him just by reading the code where the bug is, or he can make a "Run to this line" debugger code, look at values of several predefined variables at that point, including arrays, sets and matrices, and find the bug right at that moment without any stepping further. Any debugging more than that seems like very-very rare, and the key is he understands which invariants must hold at any moment in the program and spots the disturbances, and then he somehow knows very quickly where in the code these invariants could possibly be violated.
Petr always writes very clean and understandable code. He never tended to write shorter code, but always readable. By the way, it helps a lot for writing bug-free code initially and ultra-fast debugging in the competitive programming, which is not so obvious a strategy as for industrial programming.
Obviously, he is very good at concentration, very attentive and very good at enumerating all the possible cases rigorously in the problems where it is necessary.
One thing that could surprise you is he never devoted too much time to training in competitive programming. I mean, obviously a boy who started attending the All-Russian olympiad in informatics and the training camps starting from 6th grade as opposed to the usual 9th grade got a lot of training. But he always says he preferred to always have and devote time to playing soccer with his friends etc. I don't know about the school years, but he actually didn't train other than participating in the real contests during his ACM years at university. Me and Egor (@http://www.quora.com/TopCoder/Who-is-Egor-Kulikov/
) were always in the lab trying to find some new contest in the internet and participate, while he was just coming in sometimes and mocking us a little about that :) Then TopCoder "appeared", and after some reluctancy to join ("Why would I? Tomek will beat me anyway :)") he found the regular source of contests which he rarely misses up to these days. It is not even surprising to me anymore when Petr wins some SRM or another personal round while waiting for the boarding in the airport and having like 40 minutes instead of 75 to complete the coding. But other than those official contests which are plenty of nowadays but were pretty scarce 8-10 years ago I didn't see him training.
One of the other pecularities is particular honesty pushed to the limits. You can basically perceive Petr as a computer program instead of a mere mortal in terms of his words and deeds :) If he says something, he'll keep his word, and he, like, always obeys any existing rules from laws and competition rules to crossing the traffic lights. One could say this is what everybody should do, but one can really rarely find a person who actually does it. And this is often a role model I use for myself as opposed to the widespread mentality of "soft laws" around me. Although not always :) You can also expect some influence on yourself because of that: he'll always talk to you in English if there are people who don't understand Russian around, and you'll always have to fasten your seat belt in the car :) Even if you're at the rear seat :) (which is a rule everybody should follow, but unfortunately is not the case in the real world).
Petr also attended most of the university courses, which is not at all a commonplace at MSU. We both graduated with a full 5.0 GPA which is a rare occasion. I don't know his reason for that, mine was like "why not get a 5 (an A) if it's easy". You would probably not be surprised it was easy to study for Petr, but it includes some humanities and sports also and still says something important about the person.
Petr often has a controversial opinion on some topic. What strikes me is not this fact alone, it is that he often has this opposite opinion on a topic you considered so obvious and solved forever for everybody, and it's not only a opinion but a very strong argumentation for it :) It literally makes you at least reconsider your attitude to some commonplace things you would never even think about.
It also seems we have something shared in our attitude to the science. We both didn't get a PhD yet, mostly because it turned out work on practical complex problems at Google and Yandex (for me) appealed to us much more than unsolved mathematical problems we've tried, and the scientific studies were given a low priority. Friends are "jumping around" asking why don't we do our PhDs, but for me and I assume for Petr the certificate itself isn't worth anything if I don't solve something really important. I'm still in the search for "my" topic, I'm not sure about Petr, but I believe we'll probably both find some interesting publishable topics accidentally in the future.