結果
| 問題 |
No.750 Frac #1
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-12-17 13:49:40 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 26 ms / 1,000 ms |
| コード長 | 2,193 bytes |
| コンパイル時間 | 2,237 ms |
| コンパイル使用メモリ | 110,788 KB |
| 実行使用メモリ | 26,096 KB |
| 最終ジャッジ日時 | 2024-09-25 07:35:10 |
| 合計ジャッジ時間 | 3,400 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
namespace No750_Frac_1
{
class Program
{
static void Main(string[] args)
{
int n = int.Parse(Console.ReadLine());
int[] a = new int[n];
int[] b = new int[n];
string[] data = new string[2];
int[] value = new int[n];
int[] rank = new int[n];
int lcm;
for (int i = 0; i < n; i++)
{
data = Console.ReadLine().Split(' ');
a[i] = int.Parse(data[0]);
b[i] = int.Parse(data[1]);
rank[i] = i;
}
if (n > 1)
{
lcm = Lcm(b);
for (int i = 0; i < n; i++)
value[i] = a[i] * lcm / b[i];
Sort(value, ref rank);
}
for (int i = 0; i < n; i++)
Console.WriteLine(a[rank[i]] + " " + b[rank[i]]);
}
static void Sort(int[] value, ref int[] rank)
{
int n = value.Length;
for (int i = 0; i < n - 1; i++)
{
for (int j = i; j < n; j++)
{
if (value[i] < value[j])
{
Swap(ref value[i], ref value[j]);
Swap(ref rank[i], ref rank[j]);
}
}
}
}
static int Lcm(int[] num)
{
int result = Lcm(num[0], num[1]);
if (num.Length > 2)
for (int i = 2; i < num.Length - 1; i++)
result = Lcm(result, num[i]);
return result;
}
static int Lcm(int a, int b)
{
return a * b / Gcd(a, b);
}
static int Gcd(int a, int b)
{
if (a < b)
Swap(ref a, ref b);
while (b != 0)
{
int rem = a % b;
a = b;
b = rem;
}
return a;
}
static void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
}
}