AtCoder Beginner Contest 144 #ABC144
2023-12-22AtCoder Beginner Contest 144 の A/B/C 問題の解法。
実装はこちら atcoder/abc/101-200/144 · michimani/atcoder 。
A - 9x9
特筆する点はなし。入力値は整数なので \(0 \lt A \lt 10, 0 \lt B \lt 10\) の場合にその積を出力して終了。それ以外は \(-1\) を出力して終了。
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a > 0 && a < 10 && b > 0 && b < 10)
{
cout << a * b << endl;
return 0;
}
cout << "-1" << endl;
return 0;
}
提出 #48710911 - AtCoder Beginner Contest 144
B - 81
\(N\) が \(1 \leq i \leq 9\) となる各 \(i\) で割り切れるかを順に判定し、商が \(9\) 以下である場合は Yes
を出力して終了。条件を満たす \(i\) がなかった場合は No
を出力して終了。
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 1; i <= 9; i++)
{
if (n % i == 0 && n / i <= 9)
{
cout << "Yes" << endl;
return 0;
}
}
cout << "No" << endl;
return 0;
}
提出 #48710870 - AtCoder Beginner Contest 144
C - Walk on Multiplication Table
C - Walk on Multiplication Table
\(N\) が \(1 \leq i \leq \sqrt{N} \) となる各 \(i\) で割り切れるかどうかを順に判定し、割り切れる場合は \(i + \frac{N}{i} - 2\) を計算して仮の答えとする。\(-2\) しているのは、表の現在地が \((1,1)\) であることを考慮しているため。
条件を満たす \(i\) が見つかるたびに現在の仮の答えと比較して小さい方の値で更新し、最終的な答えとして出力する。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
unsigned long long n;
cin >> n;
unsigned long long ans = 0;
for (unsigned long long i = 1; i <= (unsigned long long)(sqrt(n)); i++)
{
if (n % i != 0)
{
continue;
}
if (ans == 0)
{
ans = i + n / i - 2;
}
else
{
ans = min(ans, i + n / i - 2);
}
}
cout << ans << endl;
return 0;
}
提出 #48710791 - AtCoder Beginner Contest 144
comments powered by Disqus