1088三人行——C/C++実現
タイトル
1088三人行(20 point(s))
子の曰わく、三人の行いには、必ず我が師あり.
本題は甲、乙、丙の3人の能力値の関係を与えます:甲の能力値は2位の正の整数であることを確定します;甲の能力値の2つの数字を位置を変えるのが乙の能力値です.甲乙二人の能力差は丙の能力値のX倍である.乙の能力値は丙のY倍である.誰があなたより強いのか、誰があなたより弱いのかを指摘してください.
入力形式:
1行に3つの数を入力します.M(自分の能力値)、X、Yの順です.3つの数字はいずれも1000を超えない正の整数です.
出力フォーマット:
一行の中でまず甲の能力値を出力して、それから順番に甲、乙、丙の3人とあなたの関係を出力します:もしそれがあなたより強いならば、
注意:解が一意でない場合は、甲の最大解を基準に判断する.解が存在しない場合、出力
サンプル1を入力:
出力サンプル1:
入力サンプル2:
出力サンプル2:
アルゴリズム#アルゴリズム#
フォーマットに注意します.丙は必ずしもint値ではなく、4.5のような数字~である可能性があるので、丙~i、j、kはそれぞれ甲乙丙~iを代表して99から10まで問題に合った数字を見つければよい~
コード#コード#
1088三人行(20 point(s))
子の曰わく、三人の行いには、必ず我が師あり.
本題は甲、乙、丙の3人の能力値の関係を与えます:甲の能力値は2位の正の整数であることを確定します;甲の能力値の2つの数字を位置を変えるのが乙の能力値です.甲乙二人の能力差は丙の能力値のX倍である.乙の能力値は丙のY倍である.誰があなたより強いのか、誰があなたより弱いのかを指摘してください.
入力形式:
1行に3つの数を入力します.M(自分の能力値)、X、Yの順です.3つの数字はいずれも1000を超えない正の整数です.
出力フォーマット:
一行の中でまず甲の能力値を出力して、それから順番に甲、乙、丙の3人とあなたの関係を出力します:もしそれがあなたより強いならば、
Cong
を出力します;平等はPing
を出力する.あなたより弱い場合はGai
を出力します.その間は1つのスペースで区切られており、行の先頭と末尾に余分なスペースがないようにしてください.注意:解が一意でない場合は、甲の最大解を基準に判断する.解が存在しない場合、出力
No Solution
.サンプル1を入力:
48 3 7
出力サンプル1:
48 Ping Cong Gai
入力サンプル2:
48 11 6
出力サンプル2:
No Solution
アルゴリズム#アルゴリズム#
フォーマットに注意します.丙は必ずしもint値ではなく、4.5のような数字~である可能性があるので、丙~i、j、kはそれぞれ甲乙丙~iを代表して99から10まで問題に合った数字を見つければよい~
コード#コード#
#include
#include
using namespace std;
int m, x, y;
void print(double t) {
if (m == t) printf(" Ping");
else if (m < t) printf(" Cong");
else printf(" Gai");
}
int main() {
scanf("%d %d %d", &m, &x, &y);
for (int i = 99; i >= 10; i--) {
int j = i % 10 * 10 + i / 10;
double k = abs(j - i) * 1.0 / x;
if (j == k * y) {
cout << i;
print(i); print(j); print(k);
return 0;
}
}
cout << "No Solution";
return 0;
}