以下の問に答えよ。
下に示すように、正の整数 n をキーボードから受け取って、1 から n までの整数を表示して、区切りとして、各数の後に空白を表示するが、
3 または 5 で割り切れる整数
はその数の後の空白の代わりに、#
を表示するプログラムを作成せよ。
(n として負の数または 0 を受け取ったときは、改行のみ表示するか、もしくは何も表示しなくてよい。)
正の整数を入力してください: 4↵
1 2 3#4
実行例 2:
正の整数を入力してください: 15↵
1 2 3#4 5#6#7 8 9#10#11 12#13 14 15#
実行例 3:
正の整数を入力してください: 0↵
実行例 4:
正の整数を入力してください: 1↵
1
下に示すように、0 以上の数 n
をキーボードから受け取って、
ディスプレイ上に、最も上の行の長さが n
で、長さが 2 ずつ減る左上直角三角形を表示するプログラムを作成せよ。
文字は行ごとに左端が n(を10 で割った余り)から始まり、右に行くについれて 1 ずつ減る数(を10 で割った余り)を表示するようにせよ。
(つまり、右端の数字が下に行くにつれて、1, 3, 5, 7, 9, 1, 3, … となる。)
また、一番最後に(余分な空行を開けずに)end
と表示せよ。
(n として負の数または 0 を受け取ったときは、end
のみ表示する。)
非負の整数を入力してください: 9↵
987654321
9876543
98765
987
9
end
実行例 2:
非負の整数を入力してください: 12↵
210987654321
2109876543
21098765
210987
2109
21
end
実行例 3:
非負の整数を入力してください: 0↵
end
int
型の引数 \(m\), \(n\) を受け取り、\(m^k\) が \(n\) を割り切る最大の整数
\(k\)(つまり、\(m\) が \(n\) を何回割り切れるか)を返す関数
int foo(int m, int n)
を定義せよ。\(m \ge 2\), \(n \ge 1\) と仮定して良い。
main
関数は以下のコードを利用して、確認せよ。
実行例は、以下のようになる。(\(768 = 2^8 \times 3\), \(120000 = 2^6 \times 3^1 \times 5^4\))
実行例 1:正の整数 1 を入力してください: 2↵ 正の整数 2 を入力してください: 768↵ 2 の 8 乗は 768 を割り切ります。実行例 1:
正の整数 1 を入力してください: 5↵ 正の整数 2 を入力してください: 120000↵ 5 の 4 乗は 120000 を割り切ります。
int
型の配列 v
と、
この配列の要素数を表す int
型の引数 n
をこの順に受け取り、
\(0 \le i < n\) の整数 \(i\) に対して、va[0]
〜 va[i]
の和が
負となるような添字 \(i\) の個数を返す関数
int bar(const int v[], int n)
を定義せよ。
main
関数は以下のコードを利用して、確認せよ。
この場合、プログラムは、
va は和が負になるのは 5 回です。 vb は和が負になるのは 0 回です。 vc は和が負になるのは 3 回です。
と出力する。(va
, vb
, vc
をいろいろ変えて試してみよ。 )
整数 \(n\) を引数として受け取って、\( 0 \le x \le y < n \) を満たす
整数 \(x\), \(y\) の組(タプル)で \(x + y\) が 3 の倍数となるもののリストを返す関数
chome
を Python で定義せよ。(リストの中の順番は、この問題では問わない。)
例えば、chome(5)
は [(0, 0), (0, 3), (1, 2), (2, 4), (3, 3)]
を、
chome(7)
は [(0, 0), (0, 3), (0, 6), (1, 2), (1, 5), (2, 4), (3, 3), (3, 6), (4, 5), (6, 6)]
を返す。