一、数学函数C
#include <iostream>
long long C(int m, int n)
{
if ( m==n ) return 1;
if ( m==1 ) return n;
return C(m, n - 1) + C(m - 1, n - 1);
}
二、判断素数
#include <iostream>
bool prime(int n)
{
if (n < 2) return false;
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
return false;
break;
}
}
return true;
}
三、场宽(居中)
#include <iostream>
#include <string>
string among(int n, string s1)
{
string s2 =s 1;
for (int i = 1; i <= (n - s1.size()) - (n - s1.size()) / 2; i++)
s2.insert(s2.size(), " ");
for (int i = 1; i <= (n - s1.size()) / 2; i++)
s2.insert(0, " ");
return s2;
}
四、第一个≥x的数的位置
#include <iostream>
int n, a[1000001];
int lfind(int x)
{
int l = 1, r = n, mid;
while (l <= r)
{
mid = (l + r) / 2;
if (a[mid] >= x) r = mid - 1;
else l = mid + 1;
}
return l;
}
五、最后一个≤x的数的位置
#include <iostream>
int n, a[1000001];
int rfind(int x)
{
int l = 1, r = n, mid;
while (l <= r)
{
mid = (l + r) / 2;
if (a[mid] <= x) l = mid + 1;
else r = mid - 1;
}
return r;
}
六、最大公约数
#include <iostream>
int GCD(int n, int m)
{
int r;
r = n % m;
n = m;
m = r;
if (r == 0) return n;
else return GCD(n, m);
}
七、树根
#include <iostream>
int root(int n)
{
int c = 0;
if (n < 10) return n;
else
{
while (n > 0)
{
c += n%10;
n /= 10;
}
n = c;
return deal(n);
}
}
八、十进制转二进制
#include <iostream>
using namespace std;
void binary(int n)
{
if (n == 0) cout<<0;
else
{
if (n == 1) cout<<1;
else
{
binary(n / 2);
cout<<n % 2;
}
}
}
九、十进制转八进制
#include <iostream>
using namespace std;
void octal(int n)
{
if (n >= 0 && n <= 8) cout<<n;
else
{
octal(n / 8);
cout<<n % 8;
}
}
十、十进制转十六进制
#include <iostream>
using namespace std;
void hexadecimal(int n)
{
if (n >= 0 && n <= 9) cout<<n;
if (n >= 10 && n <= 16) cout<<char(n + 55);
if (n > 16)
{
hexadecimal(n / 16);
if (n % 16 <= 9) cout<<n % 16;
else cout<<char(n % 16 + 55);
}
}