SlideShare a Scribd company logo
1 of 118
Introduction to
Programming
情報知識ネットワーク研究室 B4 谷 陽太
4/28 HCPC勉強会 1
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
簡単なプログラムの
書き方を紹介するよ!
使用言語:C++
2
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
3
おまじない
int main(void){
return 0;
}
4
おまじない
int main(void){
return 0;
}
5
プログラムのコードはこの間に書くよ!
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
6
変数とは
• 変数とは値を格納する箱である!
7
a
変数とは
• 変数とは値を格納する箱である!
8
a
300
変数とは
• 変数とは値を格納する箱である!
• ただし、どんな値でも格納できるわけではない
格納できる値のタイプによって「型」が分かれている
9
a
300
変数の型
• 型いろいろ
整数型、小数(実数)型、文字型、非負の整数型……
10
変数の型
• 型いろいろ
整数型、小数(実数)型、文字型、非負の整数型……
• もっとも基礎となる型: int型
integerの略で、整数しか扱えない
小数点以下は切り捨てになる
扱える範囲
-2,147,483,648 〜 2,147,483,647
11
変数の宣言と代入
• int型の「a」って名前の変数を作りたい!(変数宣言)
int a;
• 「a」に「3」という値を格納したい!(代入)
a = 3;
• 変数宣言と代入は同時に行うこともできる
int a = 3;
12
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
13
四則演算
• プログラムでは四則演算ができる!
加算: + 減算: - 乗算: * 除算: / 剰余算: %
14
四則演算
• プログラムでは四則演算ができる!
加算: + 減算: - 乗算: * 除算: / 剰余算: %
• 例: int型の変数「a」を宣言し、4×3の結果を代入する
int main(void){
int a;
a = 4 * 3;
return 0;
}
15
四則演算
• 四則演算の実行順序は数学と同じ
乗算・除算・剰余算が優先、加算・減算は後回し
優先順位が同じ場合は、左から順に処理する
• 略記法が存在する!
例: a自身を3倍する ( 乗算以外も3以外でも同様に表記してOK )
a = a * 3; → a *= 3;
例: a自身を1増やす ( 加減算の場合かつ差分が1の場合のみ )
a = a + 1; → a++;
16
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
17
入出力
• 変数に入力を受け取ろう!
cin >> (変数名); 例:cin >> a;
• 変数の中身や値を出力しよう!
cout << (変数名); 例:cout << a;
cout << (値); 例:cout << 3 << endl;
cout << “Hello World”;
改行
↙
18
入出力
• cin, cout したくなったら
プログラムの最初に、こう書こう!
#include <iostream>
using namespace std;
• int main(void)よりも前!
• とりあえず「おまじない」だと思っておこう!
19
問題1 Hello world
• 「Hello World」と出力せよ
(出力の最後に改行するのを忘れないように)
#include <iostream>
using namespace std;
int main(void){
cout << “Hello World” << endl;
return 0;
}
20
問題2 X Cubic
• 入力𝐱を受け取り𝐱 𝟑
を出力せよ
#include <iostream>
using namespace std;
int main(void){
int x;
cin >> x;
cout << x * x * x << endl;
return 0;
} 21
問題3 Rectangle
• 長方形の2辺の長さを受け取り
面積と外周を半角空白で区切って出力せよ
#include <iostream>
using namespace std;
int main(void){
int h, w;
cin >> h >> w;
cout << h * w << “ ” << h * 2 + w * 2 << endl;
return 0;
} 22
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
23
浮動小数点型
• int型は整数値しか扱えない
例: int d = 3.14;
cout << d << endl; → 「3」と出力される
欲求:小数点以下の値を含んだ値を扱いたい
24
浮動小数点型
• int型は整数値しか扱えない
例: int d = 3.14;
cout << d << endl; → 「3」と出力される
欲求:小数点以下の値を含んだ値を扱いたい
→ double型を使おう!
25
double型とは
• 倍精度浮動小数点型
Double precision floating point number
26
double型とは
• 倍精度浮動小数点型
Double precision floating point number
例:
double d = 3.14;
cout << d << endl;
→ 「3.14000」と出力される!
27
double型の注意点
• 剰余演算子「%」は使えない
• うまくいかない例1:
int a = 3, b = 2;
double c = a / b;
• うまくいかない例2:
double c = 3 / 2;
28
なぜうまくいかないのか
int a = 3, b = 2;
double c = a / b;
29
int a = 3, b = 2;
double c = a / b;
なぜうまくいかないのか
int型同士の計算 → 結果はint型「1」
30
int a = 3, b = 2;
double c = a / b;
代入
1.00000
なぜうまくいかないのか
int型同士の計算 → 結果はint型「1」
31
double a = 3.66, b = 2.44;
double c = a / b;
うまくいく例1
32
double a = 3.66, b = 2.44;
double c = a / b;
うまくいく例1
代入
1.50000
double型同士の計算 → 結果はdouble型「1.50000」
33
double a = 3.66;
int b = 2;
double c = a / b;
うまくいく例2
34
double a = 3.66;
int b = 2;
double c = a / b;
double型とint型 → 結果はdouble型「1.83000」
代入
1.83000
うまくいく例2
高精度な方に統一される
double型とint型では
double型のほうが高精度
35
どうすればうまくいくのか
int a = 3, b = 2;
double c = a / b;
• 分かったこと: 少なくとも一方がdouble型なら良い
36
どうすればうまくいくのか
int a = 3, b = 2;
double c = a / b;
• 分かったこと: 少なくとも一方がdouble型なら良い
コンピュータを騙して
片方をdouble型だと思い込ませれば良い!
37
キャスト(強制型変換)
int a = 3, b = 2;
double c = (double)a / b;
38
キャスト(強制型変換)
int a = 3, b = 2;
double c = (double)a / b;
a「俺double型っスウッスウッス」
39
キャスト(強制型変換)
int a = 3, b = 2;
double c = (double)a / b;
a「俺double型っスウッスウッス」
→ うまくいく!
40
問題4 A/B Problem
• 2つの整数a, bを受け取って、以下の値を計算し
半角スペースで区切って出力せよ
a ÷ b : d (整数)
a ÷ b の余り : r (整数)
a ÷ b : f (浮動小数点数)
• Constraints
1 ≤ a, b ≤ 109
• Output
d, r, f を1つの空白で区切って1行に出力
fについては、0.00001以下の誤差があってもよい
41
問題4 A/B Problem
#include <iostream>
using namespace std;
int main(void){
int a, b;
cin >> a >> b;
int d = a / b;
int r = a % b;
double f = (double)a / b;
cout << d << " " << r << " " << f << endl;
return 0;
}
42
問題4 A/B Problem
• 実行例1
入力: 3 2
出力: 1 1 1.5
• 実行例2
入力: 12300 99
出力: 124 24 124.242
43
問題4 A/B Problem
• 実行例1
入力: 3 2
出力: 1 1 1.5
• 実行例2
入力: 12300 99
出力: 124 24 124.242 ← 実はよくない
表示桁数が足りていない!
coutは、気を利かせて適当なところで表示をやめてしまう
44
小数点以下n桁を出力させたい!
printfを使おう!
• 例:
int a = 3, b = 2;
printf(“アイ%dウエ%dオn”, a, d);
45
小数点以下n桁を出力させたい!
printfを使おう!
• 例:
int a = 3, b = 2;
printf(“アイ%dウエ%dオn”, a, d);
→ 出力: アイ3ウエ2オ
%dのところに対応するint型の値が入る
46
改行
printfの注意
• printf したくなったら
プログラムの最初に、こう書こう!
#include <cstdio>
using namespace std;
• int型の場合は%dだけど
double型の場合は%fになる!
型によって異なるので注意!
47
printfだと何が嬉しいのか
• 表示桁数を簡単に指定することができる!
printf(“%.6f”, a);
→小数点以下を6桁表示する!
48
問題4 A/B Problem
#include <iostream>
#include <cstdio>
using namespace std;
int main(void){
int a, b;
cin >> a >> b;
int d = a / b;
int r = a % b;
double f = (double)a / b;
printf(“%d %d %.6fn”, d, r, f);
return 0;
}
49
問題4 A/B Problem
• 実行例1
入力: 3 2
出力: 1 1 1.500000
• 実行例2
入力: 12300 99
出力: 124 24 124.242424
50
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
51
条件分岐
欲求: 状況に応じて処理を変更したい
→ if文を使おう!
52
if文とは
• 条件式が成立しているかどうかで処理が変わる!
if ( 条件式 ) {
条件が成立してた場合の処理
}
else {
条件が成立していなかった場合の処理
}
53
if文とは 例
• 入力xが0より大きければ「Hello World」と出力し
それ以外だったら「Bye World」と出力
cin >> x;
if ( x > 0 ) {
cout << “Hello World” << endl;
}
else {
cout << “Bye World” << endl;
}
54
3分岐以上したい場合は「else if」
if ( 条件式 A ) {
条件Aが成立していた場合の処理
}
else if ( 条件式B ) {
条件Aは成立せず、Bは成立していた場合の処理
}
else if ( 条件式C ) {
条件AとBは成立せず、Cは成立していた場合の処理
}
else {
条件AもBもCも成立していなかった場合の処理
} 55
条件式いろいろ
• aはb以上 a >= b
• aはbより大きい a > b
• aはb以下 a <= b
• aはbより小さい a < b
• aとbは等しい a == b
• aとbは異なる a != b
成立する場合 : true (1)
成立しない場合: false (0)
56
• 条件Aかつ条件B
条件式A && 条件B
• 条件Aか条件B
(少なくともどちらか一方)
条件式A || 条件式B
• 条件Aじゃない
!(条件式A)
問題5 Range
• 3つの整数a, b, cを受け取って
a < b < c なら「Yes」と出力し
それ以外であれば「No」と出力せよ
57
問題5 Range
• 3つの整数a, b, cを受け取って
a < b < c なら「Yes」と出力し
それ以外であれば「No」と出力せよ
cin >> a >> b >> c;
if ( a < b < c ) {
cout << “Yes” << endl;
}
else{
cout << “No” << endl;
}
58
問題5 Range
• 3つの整数a, b, cを受け取って
a < b < c なら「Yes」と出力し
それ以外であれば「No」と出力せよ
cin >> a >> b >> c;
if ( a < b < c ) {
cout << “Yes” << endl;
}
else{
cout << “No” << endl;
}
59
なぜ a < b < c はダメなのか
• 条件式も数学の計算順序に則る
a < b < c
60
なぜ a < b < c はダメなのか
• 条件式も数学の計算順序に則る
a < b < c
61
ここが先に評価される
なぜ a < b < c はダメなのか
• 条件式も数学の計算順序に則る
a < b < c
1 < c
やりたいことと違う!
62
ここが先に評価される
a < b が成立していたとすると……
a < b && b < c
を使おう!
問題5 Range
#include <iostream>
using namespace std;
int main(void){
int a, b, c;
cin >> a >> b >> c;
if (a < b && b < c) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
return 0;
}
63
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
64
ループ
欲求: 同じ処理を何度もやりたい!
→ ループを使おう!
• ループいろいろ
while文
for文
do while文(←今日はやらない)
65
while文とは
• 条件式が成立している限りループ!
while ( 継続条件式 ){
繰り返したい処理
}
66
問題6 Print Many Hello World
• 「Hello World」と1000回出力せよ
#include <iostream>
using namespace std;
int main(void){
int i = 0;
while ( i < 1000 ){
cout << “Hello World” << endl;
i++;
}
return 0;
} 67
for文とは
• カウントアップに便利なループ!
for (処理A; 継続条件式; 処理B){
繰り返したい処理
}
処理A: ループ突入前にやりたい処理
処理B: ループ一周終わるごとにやりたい処理
68
問題6 Print Many Hello World
• 「Hello World」と1000回出力せよ
#include <iostream>
using namespace std;
int main(void){
int i = 0;
while ( i < 1000 ){
cout << “Hello World” << endl;
i++;
}
return 0;
} 69
for (処理A; 継続条件式; 処理B){
繰り返したい処理
}
問題6 Print Many Hello World
• 「Hello World」と1000回出力せよ
#include <iostream>
using namespace std;
int main(void){
int i = 0;
while ( i < 1000 ){
cout << “Hello World” << endl;
i++;
}
return 0;
} 70
for (処理A; 継続条件式; 処理B){
繰り返したい処理
}
問題6 Print Many Hello World
• 「Hello World」と1000回出力せよ
#include <iostream>
using namespace std;
int main(void){
int i = 0;
while ( i < 1000 ){
cout << “Hello World” << endl;
i++;
}
return 0;
} 71
for (処理A; 継続条件式; 処理B){
繰り返したい処理
}
問題6 Print Many Hello World
• 「Hello World」と1000回出力せよ
#include <iostream>
using namespace std;
int main(void){
int i = 0;
while ( i < 1000 ){
cout << “Hello World” << endl;
i++;
}
return 0;
} 72
for (処理A; 継続条件式; 処理B){
繰り返したい処理
}
問題6 Print Many Hello World
• 「Hello World」と1000回出力せよ
#include <iostream>
using namespace std;
int main(void){
for (int i = 0; i < 1000; i++ ){
cout << “Hello World” << endl;
}
return 0;
}
73
問題7 Min, Max and Sum
• n 個の整数 𝒂𝒊 (i=1,2, ..., n) を入力し
それらの最小値、最大値、合計値を出力せよ
• Input
1行目に整数の数 n が与えられる
2行目に n 個の整数 𝑎𝑖 が空白区切りで与えられる
• Constraints
0 < n ≤ 10000
−1000000 ≤ 𝑎𝑖 ≤ 1000000
74
#include <iostream>
using namespace std;
int main(void){
int n, a;
int min = 2000000, max = -2000000;
int sum = 0;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a;
if(a > max){ max = a; }
if(a < min){ min = a; }
sum += a;
}
cout << min << " " << max << " " << sum << endl;
return 0;
}
75
#include <iostream>
using namespace std;
int main(void){
int n, a;
int min = 2000000, max = -2000000;
int sum = 0; ←実はよくない
cin >> n;
for(int i = 0; i < n; i++){
cin >> a;
if(a > max){ max = a; }
if(a < min){ min = a; }
sum += a;
}
cout << min << " " << max << " " << sum << endl;
return 0;
} 76
問題の制約をよく見てみる
• Constraints
0 < n ≤ 10000
−1000000 ≤ 𝑎𝑖 ≤ 1000000
77
問題の制約をよく見てみる
• Constraints
0 < n ≤ 10000
−1000000 ≤ 𝑎𝑖 ≤ 1000000
• 仮に10000個の入力がすべて1000000だったら
合計は10000000000 → int型に収まらない!
(int型の範囲は正負それぞれ約20億)
78
問題の制約をよく見てみる
• Constraints
0 < n ≤ 10000
−1000000 ≤ 𝑎𝑖 ≤ 1000000
• 仮に10000個の入力がすべて1000000だったら
合計は10000000000 → int型に収まらない!
(int型の範囲は正負それぞれ約20億)
•long long int型を使おう!
正負それぞれ約900京くらいまで対応した整数型
79
#include <iostream>
using namespace std;
int main(void){
int n, a;
int min = 2000000, max = -2000000;
long long int sum = 0;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a;
if(a > max){ max = a; }
if(a < min){ min = a; }
sum += a;
}
cout << min << " " << max << " " << sum << endl;
return 0;
}
80
問題8 Print a Rectangle
• 入力H, Wを受け取り、H×Wの長方形を # で出力せよ
• Sample Input
3 4
• Sample Output
####
####
####
※ 実際の問題は複数データセットですが、ここではスルー
81
問題8 Print a Rectangle
#include <iostream>
using namespace std;
int main(void){
int h, w;
cin >> h >> w;
for(int i = 0; i < h; i++){
for (int j = 0; j < w; j++) {
cout << "#";
}
cout << endl;
}
return 0;
}
82
無限ループ
• やめられない止まらない!
while ( true ){
繰り返したい処理
}
または
for ( ; ; ){
繰り返したい処理
}
83
無限ループ 例
• 無限に「Hello World」と出力せよ
while ( true ) {
cout << “Hello World” << endl;
}
84
ループからの脱出
• 「やめられない止まらない」はやばい
→ ループからの脱出手段が必要
break;
85
問題9 Grading
• 複数の学生のテストの点数を、1人につき3つ読み込む
中間試験の点数 m、期末試験の点数 f、再試験の点数 r
中間試験と期末試験は 50 点満点、再試験は 100 点満点
試験を受けていない場合は点数を -1 とする
後述するルールに従って成績をつけて出力せよ
• Input
複数のデータセットが入力として与えられる
各データセットでは、m、f、r が 1 行に与えられる
m、f、r がすべて -1 のとき入力の終わりとする
86
• 以下の手順で成績が付けられる:
• 中間試験、期末試験のいずれかを欠席した場合成績は F
• 中間試験と期末試験の合計点数が 80 以上ならば成績は A
• 中間試験と期末試験の合計点数が 65 以上 80 未満ならば成績は B
• 中間試験と期末試験の合計点数が 50 以上 65 未満ならば成績は C
• 中間試験と期末試験の合計点数が 30 以上 50 未満ならば成績は D
ただし、再試験の点数が 50 以上ならば成績は C
• 中間試験と期末試験の合計点数が 30 未満ならば成績は F
87
問題9 Grading
#include <iostream>
using namespace std;
int main(void){
int m, f, r;
while(true){
cin >> m >> f >> r;
if(m == -1 && f == -1 && r == -1){ break; }
if(m == -1 || f == -1){ cout << "F" << endl; }
else if(m + f >= 80){ cout << "A" << endl; }
else if(m + f >= 65){ cout << "B" << endl; }
else if(m + f >= 50){ cout << "C" << endl; }
else if(m + f >= 30){
if(r >= 50){ cout << "C" << endl; }
else{ cout << "D" << endl; }
}
else{ cout << "F" << endl; }
}
return 0;
} 88
#include <iostream>
using namespace std;
int main(void){
int m, f, r;
while(true){
cin >> m >> f >> r;
if(m == -1 && f == -1 && r == -1){ break; }
if(m == -1 || f == -1){ cout << "F" << endl; }
else if(m + f >= 80){ cout << "A" << endl; }
else if(m + f >= 65){ cout << "B" << endl; }
else if(m + f >= 50){ cout << "C" << endl; }
else if(m + f >= 30){
if(r >= 50){ cout << "C" << endl; }
else{ cout << "D" << endl; }
}
else{ cout << "F" << endl; }
}
return 0;
} 89
#include <iostream>
using namespace std;
int main(void){
int m, f, r;
while(true){
cin >> m >> f >> r;
if(m == -1 && f == -1 && r == -1){ break; }
if(m == -1 || f == -1){ cout << "F" << endl; }
else if(m + f >= 80){ cout << "A" << endl; }
else if(m + f >= 65){ cout << "B" << endl; }
else if(m + f >= 50){ cout << "C" << endl; }
else if(m + f >= 30){
if(r >= 50){ cout << "C" << endl; }
else{ cout << "D" << endl; }
}
else{ cout << "F" << endl; }
}
return 0;
} 90
目次
• おまじない
• 変数
• 四則演算
• 入出力
• 浮動小数点型
• 条件式, 条件分岐
• ループ
• 配列
91
問題10 Reversing Numbers
• 与えられた数列を逆順に出力せよ
• Input
n
a1 a2 . . . an
• Constraints
n ≤ 100
92
問題10の解き方を考える
1 2 3 4 5
93
問題10の解き方を考える
1 2 3 4 5
94
入力
問題10の解き方を考える
1 2 3 4 5
95
入力
問題10の解き方を考える
1 2 3 4 5
96
入力
問題10の解き方を考える
1 2 3 4 5
97
入力
問題10の解き方を考える
1 2 3 4 5
98
入力
問題10の解き方を考える
1 2 3 4 5
99
入力
出力
問題10の解き方を考える
1 2 3 4 5
欲求: 列になった変数みたいなのが欲しい!
100
入力
出力
問題10の解き方を考える
1 2 3 4 5
欲求: 列になった変数みたいなのが欲しい!
→ 配列を使おう!
101
入力
出力
配列とは
• 変数の列である
• 使うときは基本的に
「配列aのなんちゃら番目」と指定して使う
102
a [0] [1] [2] [3] [4] [5]
配列とは
• 宣言方法
int a[10];
103
配列とは
• 宣言方法
int a[10];
型
104
配列とは
• 宣言方法
int a[10];
名前
105
配列とは
• 宣言方法
int a[10];
長さ
106
配列とは
• 宣言方法
int a[10];
• 使い方の例
a[3] = 9;
cin >> a[5];
cout << a[7] << endl;
107
配列とは
• 宣言方法
int a[10];
• 使い方の例
a[3] = 9;
何番目の要素をいじりたいか
108
配列とは
• 初期化方法その1
int a[10] = {2, 3, 5, 8, 6, 0, 7, 9, 1, 4};
全要素を列挙する
この方法は、宣言と同時にしか使えない
109
配列とは
• 初期化方法その1
int a[10] = {2, 3, 5, 8, 6, 0, 7, 9, 1, 4};
全要素を列挙する
この方法は、宣言と同時にしか使えない
• 初期化方法その2
for(int i = 0; i < 10; i++){
a[ i ] = 3;
}
110
問題10 Reversing Numbers
• 与えられた数列を逆順に出力せよ
• Input
n
a1 a2 . . . an
• Constraints
n ≤ 100
111
問題10 Reversing Numbers
#include <iostream>
using namespace std;
int main(void){
int n;
int a[200];
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
}
for(int i = n - 1; i >= 0; i--){
cout << a[i];
if(i != 0){ cout << " "; }
}
cout << endl;
return 0;
}
112
多次元配列
int a[3][6]; 平面的や立体的な配列もできる!
113
a [0][0] [0][1] [0][2] [0][3] [0][4] [0][5]
[1][0] [1][1] [1][2] [1][3] [1][4] [1][5]
[2][0] [2][1] [2][2] [2][3] [2][4] [2][5]
問題11 Matrix Multiplication
• n×m の行列Aと m×l の行列Bを入力し
それらの積である n×l の行列Cを出力せよ
• Input
1行目に n、m、l が空白区切りで与えられる
続く行に n×m の行列A と m×l の行列 B が与えられる
• Constraints
1≤n,m,l≤100
0≤aij,bij≤10000
114
問題11 Matrix Multiplication
• Sumple Input
3 2 3
1 2
0 3
4 5
1 2 1
0 3 2
• Sumple Output
1 8 5
0 9 6
4 23 14
115
問題11 Matrix Multiplication
• Sumple Input
3 2 3
1 2
0 3
4 5
1 2 1
0 3 2
• Sumple Output
1 8 5
0 9 6
4 23 14
116
1 2
0 3
4 5
1 2 1
0 3 2
1 8 5
0 9 6
4 23 14
× =
問題11 Matrix Multiplication
117
まとめ
• 条件分岐、ループ、配列をマスターしたぞ!
今日からキミも立派なプログラマだ!
おわり
118

More Related Content

What's hot

すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!Akihiro Nishimura
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプKohsuke Yuasa
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介MITSUNARI Shigeo
 
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キューYuto Takei
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたってTsuyoshi Matsudate
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性Hibiki Yamashiro
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit ScalaKota Mizushima
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competitionyak1ex
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明MITSUNARI Shigeo
 

What's hot (20)

すごいConstたのしく使おう!
すごいConstたのしく使おう!すごいConstたのしく使おう!
すごいConstたのしく使おう!
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
 
Map
MapMap
Map
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 
RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介RSA鍵生成脆弱性ROCAの紹介
RSA鍵生成脆弱性ROCAの紹介
 
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
[Basic 3] 計算量 / 配列, 連結リスト / ハッシュ テーブル / スタック, キュー
 
これから Haskell を書くにあたって
これから Haskell を書くにあたってこれから Haskell を書くにあたって
これから Haskell を書くにあたって
 
Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 
Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
 
Emcjp item21
Emcjp item21Emcjp item21
Emcjp item21
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
Implicit Implicit Scala
Implicit Implicit ScalaImplicit Implicit Scala
Implicit Implicit Scala
 
Boost.SIMD
Boost.SIMDBoost.SIMD
Boost.SIMD
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
レベル2準同型暗号の平文バイナリ制約を与えるコンパクトな非対話ゼロ知識証明
 

Viewers also liked (6)

初めてのSTL
初めてのSTL初めてのSTL
初めてのSTL
 
初めてのプロコン
初めてのプロコン初めてのプロコン
初めてのプロコン
 
RMQ クエリ処理
RMQ クエリ処理RMQ クエリ処理
RMQ クエリ処理
 
Meet inthemiddle
Meet inthemiddleMeet inthemiddle
Meet inthemiddle
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
最短経路問題 & 最小全域木
最短経路問題 & 最小全域木最短経路問題 & 最小全域木
最短経路問題 & 最小全域木
 

Similar to Introduction to programming

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日nukaemon
 
8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)bc_rikko
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタートShumpei Shiraishi
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようKoichi Sasada
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
or-11. 線形計画法を Excel で解く
or-11. 線形計画法を Excel で解くor-11. 線形計画法を Excel で解く
or-11. 線形計画法を Excel で解くkunihikokaneko1
 
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章Hiroki Mizukami
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説AtCoder Inc.
 
超LINQ入門
超LINQ入門超LINQ入門
超LINQ入門yone64
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算MITSUNARI Shigeo
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会zakihaya
 
ji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分けji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分けkunihikokaneko1
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Inc.
 
as-4. 条件分岐と繰り返し
as-4. 条件分岐と繰り返しas-4. 条件分岐と繰り返し
as-4. 条件分岐と繰り返しkunihikokaneko1
 

Similar to Introduction to programming (20)

組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
Hupc 1
Hupc 1Hupc 1
Hupc 1
 
Gurobi python
Gurobi pythonGurobi python
Gurobi python
 
2011年11月11日
2011年11月11日2011年11月11日
2011年11月11日
 
8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)8_C言語入門 - 条件分岐について(if-else if-else)
8_C言語入門 - 条件分岐について(if-else if-else)
 
JavaScriptクイックスタート
JavaScriptクイックスタートJavaScriptクイックスタート
JavaScriptクイックスタート
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
or-11. 線形計画法を Excel で解く
or-11. 線形計画法を Excel で解くor-11. 線形計画法を Excel で解く
or-11. 線形計画法を Excel で解く
 
自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章自然言語処理のための機械学習入門1章
自然言語処理のための機械学習入門1章
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
超LINQ入門
超LINQ入門超LINQ入門
超LINQ入門
 
『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算『データ解析におけるプライバシー保護』勉強会 秘密計算
『データ解析におけるプライバシー保護』勉強会 秘密計算
 
第3回BDD勉強会
第3回BDD勉強会第3回BDD勉強会
第3回BDD勉強会
 
C言語講習会2
C言語講習会2C言語講習会2
C言語講習会2
 
ji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分けji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分け
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
 
as-4. 条件分岐と繰り返し
as-4. 条件分岐と繰り返しas-4. 条件分岐と繰り返し
as-4. 条件分岐と繰り返し
 
C言語講習会4
C言語講習会4C言語講習会4
C言語講習会4
 

More from HCPC: 北海道大学競技プログラミングサークル

More from HCPC: 北海道大学競技プログラミングサークル (20)

写像 12 相
写像 12 相写像 12 相
写像 12 相
 
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しいACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
 
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
 
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFSACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
 
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
 
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取りACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
 
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
 
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探しACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
 
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
 
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャムHUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
 
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMGHUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
 
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD RushHUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
 
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺しHUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
 
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
 
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
 
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
 
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
 
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
 
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four teaHUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 

Introduction to programming