C ++ рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди

рдЫрд╡рд┐
рд╣рдм рдкрд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ "рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд╡рд┐рд╖рдп рдереЗ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕рд░рд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ C / C ++ рдореЗрдВ рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рддреЛ рдЪрд▓рд┐рдП!

1. рдпреВрдХреНрд▓рд┐рдбрд┐рдпрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╕рд╛рдорд╛рдиреНрдп рднрд╛рдЬрдХ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рджрдоред
int GCD(int a,int b) { return b?GCD(b,a%b):a; } 


2. рдПрдирдУрд╕реА рдЦреЛрдЬрдирд╛


рдХрдо рд╕реЗ рдХрдо рд╕рд╛рдорд╛рдиреНрдп рдПрдХрд╛рдзрд┐рдХ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдПрд▓реНрдЧреЛрд░рд┐рджрдоред
 int LCM(int a,int b) { return a/GCD(a,b) * b; } 


3. рд╕рдВрдЦреНрдпрд╛ 2 ^ n рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛


рдбрд┐рдЧреНрд░реА 2 рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдоред
 int isPow2(int a) { return !(a&(a-1)); } 


4. рджреЛ рдЪрд░ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп


рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдПрдХреНрд╕рдУрдЖрд░ рдХреЗ рдкрд╛рд╕ рд╕рдордорд┐рдд рдЕрдВрддрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рддреАрд╕рд░реЗ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
 void swap(int *a, int *b) { *a ^= (*b ^= (*a ^= *b)); } 


5. рдкреНрд░рддрд┐рдкрд╛рджрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рд░реИрдЦрд┐рдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рдбрд┐рдЧреНрд░реАред
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд: рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рдбрд┐рдЧреНрд░реА 0 рд╣реИ, рддреЛ ^ 0 = 1 рд╣реИред
 int pow(int a,int n) { return (!n)?1:a*pow(a,n-1); } 


6. рднрд╛рд░рддреАрдп рдкреНрд░рддрд┐рдкрд╛рджрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо


рдПрдХ рд▓рдШреБрдЧрдгрдХ рд╕рдордп рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреА рд╢рдХреНрддрд┐ред
 int powInd(int a,int n) { return (!n)?1:((n&1)?a:1)*powInd(a*a,n/2); } 


7. рдХрд╛рд░рдХ рд╕рдВрдЦреНрдпрд╛


рдПрдХ рдЧреИрд░-рдЛрдгрд╛рддреНрдордХ рдкреВрд░реНрдгрд╛рдВрдХ n рдХрд╛ рднрд╛рдЬреНрдпред
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рд░рдВрддрд░рддрд╛: factorial n рд╕рдорд╛рд╡реЗрд╢реА рддрдХ рд╕рднреА рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рдж рд╣реИред
рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐: рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ 0 рд╣реИ, рддреЛ 0! = 1ред
 int fac(int n) { return n?n*fac(n-1):1; } 


8. рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрдХреЛрдВ рдХрд╛ рдпреЛрдЧ


рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд: рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрдХреЛрдВ рдХрд╛ рдпреЛрдЧ рдЕрдВрддрд┐рдо рдЕрдВрдХреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЕрдВрддрд┐рдо рдЕрдВрдХреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдВрдХреЛрдВ рдХрд╛ рдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐: рдпрджрд┐ рд╕рдВрдЦреНрдпрд╛ 0 рд╣реИ, рддреЛ рдЕрдВрдХреЛрдВ рдХрд╛ рдпреЛрдЧ 0 рд╣реИред
 int count(int a) { return (!a)?0:(a%10+count(a/10)); } 


9. рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛


рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛ - рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЕрдиреБрдХреНрд░рдо рдХреЗ рддрддреНрд╡ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЛ рдкрд┐рдЫрд▓реА рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдпреЛрдЧ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддреА рд╣реИред
 int fib(int n) { return (n<=2)?1:(fib(n-1)+fib(n-2)); } 


10. рдЕрдЧрд▓рд╛ рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛


рдлрд╛рдЗрдмреЛрдиреИрдЪрд┐ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХрд╛ рдХрд╛рд░реНрдпред
 int fibNext(int &f1,int &f2) { return f1=(f2+=f1)-f1; } 


11. рдореЗрд░рд╕реЗрди рдирдВрдмрд░


Mersenne рд╕рдВрдЦреНрдпрд╛ - рдлрд╛рд░реНрдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдЫрд╡рд┐
 int Mersen(int n) { return !(n&(n+1)); } 


12. рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо


 int max(int a,int b) { return (a>b)?a:b; } int min(int a,int b) { return (a>b)?b:a; } 


13. рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛


рдлрд╝рдВрдХреНрд╢рди рджреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЕрдВрддрд░ 0 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рд╕рдВрдЦреНрдпрд╛ a рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдпрджрд┐ рдпрд╣ 0 рд╣реИ, рддреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╕рдВрдЦреНрдпрд╛ a рд╕реЗ рдХрдо рд╣реИред
 template <typename TYPE> int compare (const TYPE a, const TYPE b){ return ( a - b ); } 


14. рд╕рдВрдЦреНрдпрд╛ 2 рдХреЛ n рдХреА рд╢рдХреНрддрд┐ рддрдХ рдмрдврд╝рд╛рддреЗ рд╣реБрдП


N рдмрд┐рдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдХрддрд╛ рдХреА рдкрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдбрд┐рдЧреНрд░реА рдПрди рдореЗрдВ рдПрдХ рджреЛ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред
 int pow2(int n) { return 1<<n; } 


рдХреЛрдореЗрдиреНрдЯ рд╕реЗ рд╕рд┐рдВрдЧрд▓ рд▓рд╛рдЗрди


Lertmind рд╕реЗ рдПрдирдУрд╕реА рдЦреЛрдЬрдирд╛

 int lcm(int a, int b) { return (b < 1 ? (b ? lcm(b, a % b) : a) : (a / -lcm(-b, -a % b) * b)); } 


Mrrl рд╕реЗ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЧреИрд░-рд╢реВрдиреНрдп рдмрд┐рдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛

 int NBit(unsigned int x){ return x==0 ? 0 : (x&1)+NBit(x>>1); } 


Mrrl рд╕реЗ n рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рджреЛ рдХреА рдЕрдзрд┐рдХрддрдо рд╢рдХреНрддрд┐

 int MaxDivPow2(int n){ return n&-n; } 


Lertmind рд╕реЗ рджреЛ рдирдВрдмрд░ рдХреА рддреБрд▓рдирд╛

 int cmp(int a, int b) { return (a < b ? -1 : (a > b ? 1 : 0)); } 

рдпрд╛ рдкреИрдЯрд░реНрди
 template<typename T> int cmp(const T &a, const T &b) { return (a < b ? -1 : a > b); } 


Mrrl рд╕реЗ рдПрдХ рдЗрдВрдЯ * рдЕрд░реИ (рдорд╛рди рд╕рд╛рдЗрдЬрд╝реЛрдлрд╝ (int) == 4) рдореЗрдВ kth рдмрд┐рдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ

 int GetBit(int *a,int k){ return (a[k>>5]>>(k&31))&1; } 


рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ...

Source: https://habr.com/ru/post/In146793/


All Articles