Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Конспект книги олимпиадное программирование Анти Лааксонен
- Сайты: Codeforces, Atcoder, CodeChef, CS Academy, HackerRank, Topcoder
- Сайт с адачами из книги:
- cses.fi/problemset
- Task 1. Странный алгоритм
- Принимается на вход целое положительное число n, если оно четно,
- то алгоритм делит на 2, иначе умножает на три
- и прибавляет 1
- 3→10→5→16→8→4→2→1
- #include <bits/stdc++.h>
- int main()
- {
- long long n;
- scanf("%lld", &n);
- while (true)
- {
- printf("%lld ", n);
- if (n==1) break;
- if (n%2==0) n/=2;
- else n = n*3+1;
- }
- }
- #include <bits/stdc++.h>
- //#include<iostream>
- //using namespace std;
- int main()
- {
- //ios::sync_with_stdio(0);
- //cin.tie(0);
- long long n = 1;
- long long k = 0;
- //scanf("%lld %d", &n, &k );
- while (k <50)
- {
- printf("%lld ", n); //0.017
- //cout<<n<<" "; //0.025, fastcout == 0.015
- n*=2;
- k++;
- }
- }
- ios::sync_with_stdio(0) // пространство имен: синхронизация с потоковым
- вводом выводом отключена
- cin.tie(0) //
- long long int a, b;
- scanf("%lld %lld", &a, %b);
- printf("%lld %lld\n", a, b );
- '\n' — перевод строки;
- '\t' — горизонтальная табуляция;
- '\v' — вертикальная табуляция;
- '\b' — возврат на символ;
- '\r' — возврат на начало строки;
- '\a' — звуковой сигнал.
- %d — целое число типа int со знаком в десятичной системе счисления;
- %u — целое число типа unsigned int;
- %x — целое число типа int со знаком в шестнадцатеричной системе счисления;
- %o — целое число типа int со знаком в восьмеричной системе счисления;
- %hd — целое число типа short со знаком в десятичной системе счисления;
- %hu — целое число типа unsigned short;
- %hx — целое число типа short со знаком в шестнадцатеричной системе счисления;
- %ld — целое число типа long int со знаком в десятичной системе счисления;
- %lu — целое число типа unsigned long int;
- %lx — целое число типа long int со знаком в шестнадцатеричной системе счисления;
- %f — вещественный формат (числа с плавающей точкой типа float);
- %lf — вещественный формат двойной точности (числа с плавающей точкой типа double);
- %e — вещественный формат в экспоненциальной форме (числа с плавающей точкой типа
- float в экспоненциальной форме);
- %c — символьный формат;
- %s — строковый формат.
- string s;
- getline(cin, s); передает всю строку целиком переменной s
- while (cin>>x) {}// на случай, если количество вводимых не известно
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int a = 1123456789;
- long long b = a*a// будет хуйня
- long long b = (long long)a*a;
- __int128_t a= 123412341234134123412341234132;
- свойства остатков от целочисленного деления
- (a + b) mod m = (a mod m + b mod m) mod m;
- (a - b) mod m = (a mod m - b mod m) mod m;
- (a * b) mod m = (a mod m * b mod m) mod m;
- Важная особенность: остаток от деления отрицательных чисел в с++ есть
- отрицательное число
- фикс:
- x = x%m;
- if (x<0) x+=m;
- long double a = 1.231242522512525251;
- printf("%.9lf\n", x)//1.231242522
- числа в с++ с плавающей запятой такой же гемор как и в питоне
- фикс:
- if (abs(a-b) < 1e-9){равны}
- сокращение кода
- typedef long long ll;
- typedef vector<int> vi;
- typedef pair<int, int> pi;
- Заметь что typedef меняет название типов данных и записывается
- сначала тип данных, а потом его замена
- Макросы
- #define F first
- #define S second
- #define PB push_back
- #define MP make_pair
- пример
- v.PB(MP(y1, x1));
- v.PB(MP(y2, x2));
- ll d = v[i].F+v[i].S;
- #define REP(i, a, b) for (int i = a; i<=b; i++)
- REP(i, 1, n){ search(i)};
- Рекурсивные ф-ии
- Порождение подмножеств из {1, 2, 3}
- в 0, 1, 2, 3, 1 2, 1 3, 2 3, 1 2 3
- vector<int> subset;
- void search(int k)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement