內容:
美國國家資源局使用衛星影像技術來調查森林中的樹種,你的任務就是根據輸入的樹木名稱,計算各樹種所佔的百分比。
題目概要:
1. 輸入的第一個數字為接下來多少case需要被處理。每個csae都有空白隔開。
2. 計算每個case裡的物種名稱的個數(應該是物種名稱拉,因為我沒仔細看題目,哈哈)占多少百分比。 Ps每一行代表一個物種。
3. 輸出時需要依物種名稱做排序,依序印出。
範例輸入
2
Red Alder
Ash
Ash
Aspen
Ash
Ash
Ash
Red Alder
Red Alder
|
範例輸出
Ash 50.0000
Aspen 25.0000
Red Alder 25.0000
Ash 60.0000
Red Alder 40.0000
|
static
void
Main(string[] args)
{
int
n = Convert.ToInt32(Console.ReadLine()),
h = 1;
for
(int
i = 0; i < n; i++)
{
Console.WriteLine();
string
input = null;
List<string>
remember = new List<string>();
while
(true)
{
input = Console.ReadLine();
if
(input == "") break;
remember.Add(input);
}
remember.Sort();
remember.Add("end");
for
(int
j = 0; j < remember.Count-1; j++)
{
if
(remember[j] == remember[j + 1]) h++;
else
{
Console.WriteLine("{0}: {1}",
remember[j], h);
h = 1;
}
}
}
}
難度
Sample Output
0
1
2
10
101
10201
1101001
★☆☆☆☆
問題
給你一副照順序放好的紙牌,其中卡片的編號從1~n,且1號排在最上面,n號牌在最底下。
只要這副牌還有兩張以上,你就必須照以下的規則操作:
丟掉最上面的那張牌,然後把目前最上面的那張牌放到牌堆的最下面。
Input & Output
輸入的每一列包含一個整數 n≤50,當輸入為0時代表輸入結束,你不應該處理這個輸入。
對每個輸入的數字產生兩列輸出,第一列是每張牌被丟掉的順序,第二列則是剩下的那張牌。
任何一列都不應該有任何前置或尾隨的多餘空白,輸出細節請參考sample
output。
Sample
Input
7
19
10
6
0
Sample Output
Discarded cards: 1, 3, 5, 7, 4, 2
Remaining card: 6
Discarded cards: 1, 3, 5, 7, 9, 11, 13, 15,
17, 19, 4, 8, 12, 16, 2, 10, 18, 14
Remaining card: 6
Discarded cards: 1, 3, 5, 7, 9, 2, 6, 10, 8
Remaining card: 4
Discarded cards: 1, 3, 5, 2, 6
Remaining card: 4
static
void Main(string[]
args)
{
while
(true)
{
int
n = Convert.ToInt32(Console.ReadLine()), h =0;
Console.WriteLine();
if
(n == 0) return;
List<int>
remember = new List<int>();
List<int>
anwser = new List<int>();
for
(int i = 1; i <= n; i++)
remember.Add(i);
while
(remember.Count != 1)
{
anwser.Add(remember[0]);
remember.Add(remember[1]);
remember.RemoveRange(0, 2);
h++;
}
foreach
(int item in
anwser) Console.Write("{0} ", item);
Console.WriteLine("\n{0}\n", remember[0]);
}
}
}
難度
★☆☆☆☆
問題
給你十進位的數字 N,請你把他轉換成 3 進位。
Input
輸入包含多組測試資料。每組測試資料一列有1個整數
N(0 <= N < 1000000001)。
當 N<0 時,代表輸入結束。
Output
每組測試資料輸出一列,輸出 N 的
3 進位表示。
Sample Input
0
1
2
3
10
100
1000
-9
1
2
3
10
100
1000
-9
Sample Output
0
1
2
10
101
10201
1101001
方法一
static
void
Main(string[] args)
{
while
(true)
{
int
Input = Convert.ToInt32(Console.ReadLine());
if
(Input < 0) return;
int
n = 0;
int[]
anwser = new int[30];
while (Input
>= 3)
{
anwser[n] = Input % 3;
Input /= 3;
n++;
}
anwser[n] = Input;
for
(int
i = n; i >= 0; i--)
Console.Write(anwser[i]);
Console.WriteLine("\n");
}
}
方法二
static
void Main(string[] args)
{
while (true)
{
double n = Convert.ToInt32(Console.ReadLine()), pow =0;
List<int>
anwser = new List<int>();
if (n < 0) return;
while (n / Math.Pow(3,
pow) > 3) pow++;
for (int i = (int)pow; i >= 0; i--)
{
for
(int j = 2; j >= 0; j--)
{
if
(n - Math.Pow(3, i) * j >= 0)
{
n = n - Math.Pow(3,
i) * j;
anwser.Add(j);
break;
}
}
}
foreach (var item in anwser)
Console.Write(item);
Console.WriteLine("\n ");
}
}
沒有留言:
張貼留言