C++入门常用算法(函数源代码)

一、数学函数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);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Server65535

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值