完整題目 PDF 檔在這裡
第一題 PDF 檔在這裡
第二題 PDF 檔在這裡
第三題 PDF 檔在這裡
題敘改編自 NceS - Burn
這一題簡單來說就是分別比較 Yes
,否則輸出No
。值得注意的是C++計算 int
的範圍,因此必須使用long long
。
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n, m, k;
cin >> n >> m >> k;
if(n + m <= k)
cout << "Yes\n";
else
cout << "No\n";
if(n * n + m * m <= k * k)
cout << "Yes\n";
else
cout << "No\n";
if(m - n <= k)
cout << "Yes\n";
else
cout << "No\n";
if(n * n + m * m <= k * k)
cout << "Yes\n";
else
cout << "No\n";
}
n = int(input())
m = int(input())
k = int(input())
if n + m <= k:
print("Yes")
else:
print("No")
if n * n + m * m <= k * k:
print("Yes")
else:
print("No")
if m - n <= k:
print("Yes")
else:
print("No")
if n * n + m * m <= k * k:
print("Yes")
else:
print("No")
這一題要輸出最少和最多能開出多少個寶藏,開出最少個寶藏必須要先把沒有寶藏的門全部開完再開有寶藏的,因此要計算出有多少沒有寶藏的門(
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n, m, t;
cin >> n >> m >> t;
long long empty = n - t;
if(empty >= m)
cout << 0 << "\n";
else
cout << m - empty << "\n";
if(t >= m)
cout << m << "\n";
else
cout << t << "\n";
}
n = int(input())
m = int(input())
t = int(input())
empty = n - t
if empty >= m:
print(0)
else:
print(m - empty)
if t >= m:
print(m)
else:
print(t)
這題首先要將 b = a / 10 + a % 10 * 10
(Python 為 b = a // 10 + a % 10 * 10
)。接著由算幾不等式可以得知
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a, k, L, R, b, p, y;
double x;
cin >> a >> k >> L >> R;
b = a / 10 + a % 10 * 10;
p = 2 * sqrt(a * b * k);
x = 1.0 * -b / (2 * a);
if(L <= x && x <= R)
y = 0;
else
{
long long y1 = a * L * L + b * L + p;
long long y2 = a * R * R + b * R + p;
if(y1 < y2)
y = y1;
else
y = y2;
}
cout << p << "-" << b << "-" << y << "\n";
}
a = int(input())
k = int(input())
L = int(input())
R = int(input())
b = a // 10 + a % 10 * 10
p = 2 * int((a * b * k) ** 0.5)
x = -b / (2 * a)
y = 0
if L <= x and x <= R:
y = 0
else:
y1 = a * L * L + b * L + p
y2 = a * R * R + b * R + p
if y1 < y2:
y = y1
else:
y = y2
print(p, b, y, sep = '-')
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long a, k, L, R, b, p, y;
double x;
cin >> a >> k >> L >> R;
b = a / 10 + a % 10 * 10;
p = 2 * sqrt(a * b * k);
x = 1.0 * -b / (2 * a);
if(L <= x && x <= R)
y = 0;
else
{
if(abs(L - x) > abs(R - x))
y = a * R * R + b * R + p;
else
y = a * L * L + b * L + p;
}
cout << p << "-" << b << "-" << y << "\n";
}
a = int(input())
k = int(input())
L = int(input())
R = int(input())
b = a // 10 + a % 10 * 10
p = 2 * int((a * b * k) ** 0.5)
x = -b / (2 * a)
if L <= x and x <= R:
y = 0
else:
if abs(L - x) > abs(R - x):
y = a * R * R + b * R + p
else:
y = a * L * L + b * L + p
print(p, b, y, sep = '-')
第一題:鯊鯊想睡睡(7分鐘)
第二題:1257891(13分鐘)
第三題:Zurichyoz(40分鐘)
第一名:Zurichyoz(300分)
第二名:Andrew1023666(230分)
第三名:cyan0(200分)
因為 zerojudge 只能用測資獨立計分不能用子題,所以第一題直接輸出 No No No No
、No No Yes No
、No Yes Yes Yes
、Yes Yes Yes Yes
都可以得到部分分數,但好像沒有人這樣做。
還有 cyano 幫第三題加了一個