Skip to content

kyutech-programming-club/c_quiz_2021

Repository files navigation

一日一問C言語クイズ

2021夏休みで開催

始め方

  1. このリポジトリをクローンする
  2. 自分のフォルダを作る(your_nameフォルダみたいな感じで)
  3. ブランチを切る(ブランチ名は被らないように自分の名前とか)
  4. 日付がわかるようなファイル名で解く(例:quiz_0815.c)
  5. add, commit, push
  6. masterブランチへ、プルリクエストを作る
  7. LGTM貰ったらマージ
  8. 自身のmasterを更新、自分のブランチを削除
  9. 毎日問題が出るので、3〜8を繰り返す

詳しくはこちらから

問題

8月16日(月): "Hello World" を出力してください。

8月17日(火): キーボードからの入力(整数)に1を足した値を出力してください。

8月18日(水): キーボードからの入力(整数)が偶数なら0、奇数なら1を出力してください。

8月19日(木): 二つキーボードから入力(整数)し、一つ目の整数が二つの整数で割り切れたら"Y"、そうでないなら"N"を出力してください。

8月20日(金): キーボードからの入力(実数)を半径とする、球体の体積を出力してください。ただし、pi = 3.14とする。

8月21日(土): 身長[m]と体重[kg]を入力し、BMI(= 体重kg ÷ (身長m)^2)が18.5未満なら"痩せ型" 、25以上なら"肥満"、18.5以上25未満なら"普通"と出力してください。

8月22日(日): 二つキーボードから入力(整数)し、一つ目の数(num1)から二つめの数(num2)までの総和を出力してください。ただし、num1 < num2とする。

8月23日(月): 二つキーボードから入力(整数)し、一つ目の数(num1)から二つめの数(num2)までの整数の積を出力してください。ただし、num1 < num2とする。

8月24日(火): キーボードからの入力(整数)の各桁の総和を出力してください。(ex. 1234 -> 10)

8月25日(水): 1〜100までの数字を一つずつ出力してください。ただし、数字が3の倍数の時は"Fizz"、5の倍数の時は"Buzz"、3の倍数でも5の倍数でもあるときは"FizzBuzz"と数字の代わりに出力してください。

8月26日(木): キーボードからの入力(整数)の約数の総和を出力してください。

8月27日(金): キーボードからの入力(整数)以下の整数のうち、素数がいくつあるかを出力してください。

8月28日(土): キーボードからの入力(整数)以下の整数のうち、最も約数の多い数を出力してください。ただし、約数の数が同じ数字が複数個あった場合には数が大きい方を優先する。

8月29日(日): 3桁の整数をキーボードから受け取り、桁を入れ替えた値を整数として出力してください。(ex. 123 -> 321)

8月30日(月): キーボードからの入力(文字列)の長さを出力してください。

8月31日(火): ベクトルX(x1, x2, x3)とベクトルY(y1, y2, y3)の内積を出力してください。 (入力例: 1 2 3 3 2 1 -> 出力: 10)

9月1日(水): ベクトルX(x1, x2, x3)とベクトルY(y1, y2, y3)の外積を出力してください。 (入力例: 1 2 3 3 2 1 -> 出力: -4 8 -4)

9月2日(木): 整数nのm乗を返す関数 int power(int n, int m) を作成して、二つの入力値からnのm乗を出力してください。

9月3日(金): 1からnまでの5乗の和は、n^2 * (n+1)^2 * (2n^2 + 2n - 1) / 12で表せますが、これが正しい値を示すか0902分の関数を用いて試してみてください。 (int型だと n == 32 くらいで死ぬので注意)

9月4日(土): long rondom(void)を呼び出すととても大きい正の整数がランダムで返ってくる。これを用いて0以上n未満の正の整数をランダムで返す関数int my_rand(int n)を作成してください。ここでmainの最初などでsrandom(getpid());を実行しないと毎回同じような乱数が返ってくるので注意。また、random(), srandom(), getpid()を使うには#include <unistd.h>#include <stdlib.h>を加える必要がある。

9月5日(日): 9/4の関数を使って、0.0 <= x < 1.0 の浮動小数点乱数を返す関数 float randf(void)を作成してください。

9月6日(月): フィボナッチ数列の第n項を返す関数 int fibo(int n) を作成してください。ここで、fibo(0) = 0, fibo(1) = 1, fibo(2) = 1 で、 一般的にfibo(n) = fibo(n-1) + fibo(n-2) で表される。

9月7日(火): 文字列 s1 と文字列 s2 が等しいかどうかを判定する関数(0 or 1) int str_eql(char* s1, char* s2) を作成してください。

9月8日(水): 正の整数nをnの最初と最後にnの桁数分1を付け足した数に変化させる関数 void interrupt_with_one(int *n) を作成してください。 (ex.1: 23 -> 112311, ex.2: 123 -> 111123111) (4桁以上で死ぬので注意)

9月9日(木): 0 ~ n-1のn個の整数が重複なくランダムに入った配列を戻り値とする関数、int *shuffle(int n)を作成してください。

9月10日(金):

問題文
水色のボールが A 個容器に入っています。高橋くんはこの容器に対し、以下の操作を 0 回以上好きなだけ繰り返します。

  • 水色のボール B 個と赤色のボール C 個を容器に追加する。

高橋くんの目標は、容器に入っている水色のボールの個数が赤色のボールの個数の D 倍以下になるようにすることです。
目標が達成可能かを判定し、可能なら必要な操作回数の最小値を求めてください。

制約

  • 1 <= A, B, C, D <= 10^5
  • 入力は全て整数である

入力
入力は以下の形式で標準入力から与えられる。

A B C D

出力
高橋くんの目標が達成可能なら、操作回数の最小値を出力せよ。そうでなければ、-1 を出力せよ。

ABC207 B問題より

9月11日(土):

問題文
縦 H マス、横 W マスのマス目があります。上から i 行目、左から j 列目のマスには、ブロックが A_i,j個あります。 どのマスにも同じ個数のブロックがある状態にするには、最小で何個のブロックを取り除けばよいでしょうか?

制約

  • 1<= H, W <= 100
  • 0 <= A_i,j <= 100

入力
入力は以下の形式で標準入力から与えられる

H W
A_1,1 A_1,2 ... A_1,W
: 
A_H,1 A_H,2 ... A_H,W

出力
取り除くブロックの個数の最小値を出力せよ。

ABC186 B問題より

9月12日(日):

問題文
1 以上 N 以下の整数からなる長さ N の数列 A=(A_1, A_2,...,A_N) が与えられます。 A が (1,2,...,N) の並び替えによって得られるかどうか判定してください。

制約

  • 1 <= N <= 10^3
  • 1 <= A_i <= N
  • 入力は全て整数である。

入力
入力は以下の形式で標準入力から与えられる。

N
A_1 A_2 ... A_N

出力
A が (1,2,…,N) の並び替えによって得られるなら Yes、そうでないなら No と出力せよ。

ABC205 B問題より

9月13日(月):

問題文
高橋君はお酒を N 杯飲みました。 i 番目に飲んだお酒は、量が V_i[ml]、アルコール度数が P_i[%] です。 高橋君はアルコールの摂取量が X [ml] を超えると酔っ払います。 高橋君が酔っ払ったのは何杯目のお酒を飲んでいるときですか。ただし、N 杯全てのお酒を飲んだあとでも酔っ払っていない場合は、かわりに -1 を出力してください。

制約

  • 入力は全て整数
  • 1 <= N <= 10^3
  • 0 <= X <= 10^6
  • 1 <= V_i <= 10^3
  • 0 <= P_i <= 10^2

入力
入力は以下の形式で標準入力から与えられる。

N X
V_1 P_1
V_2 P_2
:
V_N P_N

出力
高橋君が酔っ払ったのが何杯目のお酒を飲んでいるときか出力せよ。ただし、N 杯全てのお酒を飲んだあとでも酔っ払っていない場合は、かわりに -1 を出力せよ。

ABC189 B問題より

9月14日(火):

問題分
髙橋くんは、 N 問のクイズに答えます。 髙橋くんの持っている点数をはじめ X 点で、クイズに正解する1点増え、不正解だと1点減ります。 ただし、持っている点数が0点の時には不正解となった場合は点数は減りません。

髙橋くんのクイズの結果が文字列 S で与えられます。 S の左から i 番目の文字がoのとき、i問目が正解だったことを、xのとき、i 問目が不正解だったことを表します。 髙橋くんの最終的な点数はいくつでしょうか?

制約

  • 1 <= N <= 2 * 10^5
  • 0 <= X <= 2 * 10^5
  • S は0xからなる長さ N の文字列

入力
入力が以下の形式で標準入力から与えられる。

N X
S

出力
髙橋くんの最終的な点数を出力せよ。

ABC184 B問題より

9月15日(水):

問題文
整数Nが9の倍数であることと、Nを十進法で表したときの各桁の数の和が9の倍数であることは同値です。 Nが9の倍数であるか判定してください。

制約

  • 0 <= N < 10^200000
  • Nは整数

入力
入植は以下の形式で標準入力から与えられる。

N

出力
Nが9の倍数ならばYes、そうでないならNoを出力せよ。

ABC176 B問題 より

9月16日(木):

問題文

 
を求めてください。 ただし、gcd(a,b,c)はa,b,cの最大公約数を表します。

制約

  • 1 <= K <= 200
  • Kは整数

入力
入力は以下の形式で標準入力から与えられる。

K

出力

 
の値を出力せよ。

ABC162 C問題より

9月17日(金):

問題文
1周 K メートルの遠景の湖があり、その周りに N 軒の家があります。 i 番目の家は、湖の北端から時計回りに A_i メートルの位置にあります。 家の間の移動は、湖の周りに沿ってのみ行えます。 いずれかの家から出発して N 軒すべての家を訪ねるための最短移動距離を求めてください。

制約

  • 2 <= K <= 10^6
  • 2 <= N <= 2 * 10^5
  • 0 <= A_1 < ... < A_N < K
  • 入力中のすべての値は整数である。

入力
入力は以下の形式で標準入力から与えられる。

K N
A_1 A_2 ... A_N

出力
いずれの家から出発して N 軒すべての家を訪ねるための最短移動距離を出力せよ。

ABC160 C問題より

9月18日(土):

問題文
H 行 W 列の格子状に HW 枚のカードが並べられています。 i = 1, ... , N について、上から A_i 行目、左から B_i 列目にあるカードには数 i が書かれており、それ以外の HW - N 枚のカードには何も書かれていません。 これらのカードに対し、以下の2種類の操作を可能な限り繰り返します。

  • 数の書かれたカードを含まない行が存在するとき、その行のカードを全て取り除き、残りのカードを上へ詰める
  • 数の書かれたカードを含まない列が存在するとき、その行のカードを全て取り除き、残りのカードを左へ詰める

操作が終了したとき、数が書かれたカードがそれぞれどこにあるか求めてください。なお、答えは操作の仕方に依らず一意に定まることが証明されます。

制約

  • 1 <= H, W <= 10^9
  • 1 <= N <= min(10^5, HW)
  • 1 <= A_i <= H
  • 1 <= B_i <= W
  • (A_i, B_i)は相異なる。
  • 入力に含まれる値は全て整数である

入力
入力は以下の形式で標準入力から与えられる。

H W N
A_1 B_1
:
A_N B_N

出力
N行出力せよ。 操作終了後に数 i に書かれたカードが上から C_i 行目、左から D_i 列目に存在するとき、i 行目には C_i, D_i をこの順に空白区切りで出力せよ。

ABC213 C問題より

9月19日(日):

問題文
みかんがたくさんあります。どのみかんの重さも A グラム以上 B グラム以下であるとわかっています。(みかんの重さは整数とは限りません。) この中からいくつかのみかんを選んだところ、選んだみかんの重さの合計がちょうど W キログラムになりました。 選んだみかんの個数として考えられる最小値と最大値を求めてください。ただし、このようなことが起こり得ないなら、かわりにそのことを報告してください。

制約

  • 1 <= A <= B <= 1000
  • 1 <= W <= 1000
  • 入力は全て整数

入力
入力は以下の形式で標準入力から与えられる。

A B W

出力
選んだみかんの個数としてありえる最小値と最大値を空白区切りでこの順に出力せよ。ただし、与えられた条件に合うような個数が存在しない場合、かわりにUNSATISFIABLEと出力せよ。

ABC195 B問題より

9月20日(月):

問題
N 個の宝石があり、i 番目の宝石の価値は V_i です。 あなたたちはこれらの宝石の中からいくつかを選んで手に入れます。 このとき、1つも選ばなくとも、全て選んでも構いません。 ただし、i 番目の宝石を手に入れる場合コスト C_i を支払わなければいけません。 手に入れた宝石の価値の合計を X、支払ったコストの合計を Y とします。 X - Yの最大値を求めてください。

制約

  • 入力は全て整数である。
  • 1 <= N <= 20
  • 1 <= C_i, V_i <= 50

入力
入力は以下の形式で標準入力から与えられる。

N
V_1 V_2 ... V_N
C_1 C_2 ... C_N

出力
X - Yの最大値を出力せよ。

ABC125 B問題より

9月21日(火):

問題文
数直線上に N 人の人が住んでいます。 i 番目の人が住んでいるのは座標 X_i です。 あなたは N 人全員が参加する集会を開くことを考えています。 集会は数直線上の任意の整数値座標で開くことができ、座標 P で集会を開くとき、i 番目の人は集会に参加するために(X_i - P)^2の体力を消費します。 N 人が消費する体力の総和としてありえる値の最小値を求めてください。

制約

  • 入力は全て整数である。
  • 1 <= N <= 100
  • 1 <= X_i <= 100

入力
入力は以下の形式で標準入力から与えられる。

N
X_1 X_2 ... X_N

出力
N 人が消費する体力の総和としてありえる値の最小値を出力せよ。

ABC156 C問題より

9月22日(水):

問題文
整数または少数Xが与えられるので、小数点以下を切り捨てて整数で出力してください。

制約

  • 0 <= X <= 10^100
  • X は整数、または小数点以下が100桁以下の少数であり、先頭に余計な0は付かない

入力
入力は以下の形式で標準入力から与えられる。

X

出力
X を、小数点以下を切り捨てて整数の形式で出力せよ。

ABC196 B問題より

9月23日(木):

問題文
N 個のシュークリームがあります。 シュークリームを分割することなく平等に分けることができるような人数としてあり得るものを全て求めてください。

制約

  • 1 <= N <= 10^12
  • N は整数

入力
入力は以下の形式で標準入力から与えられる。

N

出力
答えを改行区切りで昇順に出力せよ。

ABC180 C問題より

9月24日(金):

問題文
高橋君は7が嫌いです。 1以上 N 以下の整数のうち、10進数で表しても8進数で表しても7を含まないような数はいくつありますか?

制約

  • 1 <= N <= 10^5
  • N は整数である。

入力
入力は以下の形式で標準入力から与えられる。

N

出力
答えを整数で出力せよ。

ABC186 C問題より

9月25日(土):

問題文
1以上 N 以下の整数からなる長さ N の数列 A = (A_1, A_2, ..., A_N), B = (B_1, B_2, ..., B_N), C = (C_1, C_2, ..., C_N) が与えられます。 1以上 N 以下の整数i, jの組(i, j)があって、A_i = B_C_j (A[i] = B[C[j]])となるものの総数を求めてください。

制約

  • 1 <= N <= 10^5
  • 1 <= A_i, B_i, C_i <= N
  • 入力は全て整数である。

入力
入力は以下の形式で標準入力から与えられる。

N
A_1 A_2 ... A_N
B_1 B_2 ... B_N
C_1 C_2 ... C_N

出力
A_i = B_C_j となる(i, j)の総数を出力せよ。

ABC202 C問題より

9月26日(日): ABC176 C問題

9月27日(月): ABC168 C問題

9月28日(火): ABC220 C問題

9月29日(水): ABC216 C問題

9月30日(木): ABC205 C問題

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages