版本2和10间的区别 (跳过第8版)
于2006-03-11 16:06:07修订的的版本2
大小: 1306
编辑: czk
备注:
于2008-06-01 13:25:35修订的的版本10
大小: 1273
编辑: czk
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 1: 行号 1:
Bee Maja = Bee Maja =
行号 3: 行号 3:
Time limit: 1 Seconds http://acm.zju.edu.cn/show_problem.php?pid=1954
行号 5: 行号 5:
Memory limit: 32768K {{{#!cplusplus
/*Written by czk*/
#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
行号 7: 行号 13:
Maja is a bee. She lives in a bee hive with thousands of other bees. This bee hive consists of many hexagonal honey combs where the honey is stored in.

But bee Maja has a problem. Willi told her where she can meet him, but because Willi is a male drone and Maja is a female worker they have different coordinate systems.

Maja's Coordinate System
 

Maja who often flies directly to a special honey comb has laid an advanced two dimensional grid over the whole hive.


Willi's Coordinate System
 
Willi who is more lazy and often walks around just numbered the cells clockwise starting from 1 in the middle of the hive.

Help Maja to convert Willi's system to hers. Write a program which for a given honey comb number gives the coordinates in Maja's system.

== Input ==
The input contains one or more integers which represent Willi's numbers. Each number stands on its own in a separate line, directly followed by a newline. The honey comb numbers are all less than 100 000.

== Output ==
You should output the corresponding Maja coordinates to Willi's numbers, each coordinate pair on a separate line.

== Sample Input ==
{{{
1
2
3
4
5
int main() {
    int n;
    while (cin >> n ) {
        if (n==1) {
            cout << "0 0" << endl;
            continue;
        }
        double r = sqrt((double)(4*n-5)/3);
        int i = floor(r);
        if (i%2==0)
            i--;
        int level = (i-1)/2+1;
        int offset = n - 3*(level-1)*level-2;
        switch (offset / level) {
        case 0:
            cout << level-1 - offset % level<< ' ' << 1 + offset % level << endl;
            break;
        case 1:
            cout << -1 - offset % level <<' ' << level << endl;
            break;
        case 2:
            cout << - level << ' ' << level - 1 - offset % level << endl;
            break;
        case 3:
            cout << 1 - level + offset % level << ' ' << -1 - offset % level << endl;
            break;
        case 4:
            cout << 1 + offset % level << ' ' << - level << endl;
            break;
        case 5:
            cout << level << ' ' << 1 - level + offset % level << endl;
            break;
        }
    }
}
行号 37: 行号 49:
== Sample Output ==
{{{
0 0
0 1
-1 1
-1 0
0 -1
}}}

------

Bee Maja

http://acm.zju.edu.cn/show_problem.php?pid=1954

   1 /*Written by czk*/
   2 #include <iostream>
   3 #include <algorithm>
   4 #include <string>
   5 #include <cmath>
   6 using namespace std;
   7 
   8 int main() {
   9     int n;
  10     while (cin >> n ) {
  11         if (n==1) {
  12             cout << "0 0" << endl;
  13             continue;
  14         }
  15         double r = sqrt((double)(4*n-5)/3);
  16         int i = floor(r);
  17         if (i%2==0) 
  18             i--;
  19         int level = (i-1)/2+1;
  20         int offset = n - 3*(level-1)*level-2;
  21         switch (offset / level) {
  22         case 0:
  23             cout << level-1 - offset % level<< ' ' << 1 + offset % level << endl;
  24             break;
  25         case 1:
  26             cout << -1 - offset % level <<' ' << level << endl;
  27             break;
  28         case 2:
  29             cout << - level << ' ' << level - 1 - offset % level << endl;
  30             break;
  31         case 3:
  32             cout << 1 - level + offset % level << ' ' << -1 - offset % level << endl;
  33             break;
  34         case 4:
  35             cout << 1 + offset % level << ' ' << - level << endl;
  36             break;
  37         case 5:
  38             cout << level << ' ' << 1 - level + offset % level << endl;
  39             break;
  40         }
  41     }
  42 }

zju1954 (2008-06-01 13:25:35由czk编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.