// Contoh Bab 16: aturan penjumlahan dan perkalian, diperiksa dengan // pencacahan langsung. // // Compile: g++ -std=c++17 -O2 -o aturan exercises/16/01-aturan-dasar.cpp // Jalankan: ./aturan #include using namespace std; int main() { // Plat: satu huruf lalu tiga angka, angka boleh berulang. long long rumus1 = 26LL * 10 * 10 * 10; long long cacah1 = 0; for (int h = 0; h < 26; h++) for (int a = 0; a < 10; a++) for (int b = 0; b < 10; b++) for (int c = 0; c < 10; c++) cacah1++; cout << "boleh berulang : rumus " << rumus1 << ", cacah " << cacah1 << "\n"; // Plat: angka tidak boleh berulang. long long rumus2 = 26LL * 10 * 9 * 8; long long cacah2 = 0; for (int h = 0; h < 26; h++) for (int a = 0; a < 10; a++) for (int b = 0; b < 10; b++) for (int c = 0; c < 10; c++) if (a != b && a != c && b != c) cacah2++; cout << "tanpa berulang : rumus " << rumus2 << ", cacah " << cacah2 << "\n"; // Inklusi-eksklusi: habis dibagi 3 atau 5, dari 1 sampai 100. long long rumus3 = 100 / 3 + 100 / 5 - 100 / 15; long long cacah3 = 0; for (int i = 1; i <= 100; i++) if (i % 3 == 0 || i % 5 == 0) cacah3++; cout << "3 atau 5 : rumus " << rumus3 << ", cacah " << cacah3 << "\n"; return 0; }