GUZAI3ノートブック

友人であるGUZAI3様の依頼で備忘録を書いています。

C

C言語で座標平面上の任意の点を反時計回りに回転させたときの座標を計算する

AtCoderで座標回転が出題されたときに苦労したので、ここで整理しておく。まず、以下のように記号を定める。 :回転前の座標 :回転後の座標 :反時計回りに回転させる角度すると、原点を中心とした反時計回りの回転はこのように計算できる。整理して...次に…

C/C++で符号付き整数を-1で除算すると未定義動作になることがある

C C++

ゼロ除算には気をつけているが、そうでない除算も未定義動作になるケースがあることに気付かされた。例えば16ビット符号付き整数型の最小値 -32768 を -1 で除算すると、オーバーフローしてしまう。 普通に算数をすると 32768 になるのだが、最大値は 32767 …

C言語で再帰関数を使わずに最大公約数(GCD)を求める

定番であるユークリッドの互除法で。 #include <stdio.h> int main() { unsigned int num1 = 1029; // GCDを求めたいペアのひとつ unsigned int num2 = 1071; // GCDを求めたいペアのひとつ // GCD計算 unsigned int a = num1; unsigned int b = num2; unsigned int r</stdio.h>…

C言語でFizzBuzz

#include <stdio.h> int main() { int end = 128; // 出力数 for (int n = 1; n < end; n++) { if (n % 15 == 0) { puts("FizzBuzz"); } else if (n % 3 == 0) { puts("Fizz"); } else if (n % 5 == 0) { puts("Buzz"); } else { printf("%d\n", n); } } return 0; } </stdio.h>…