求N的阶乘

#if 0
#include <iostream>
using namespace std;
//求N的阶乘
int fac(int n) {
	if (n <= 1)
		return 1;
	else
		return n * fac(n - 1);
}
int main() {
	int num;
	cin >> num;
	int ret = 0;
	for (int i = 1; i <= num; i++) {
		ret += fac(i);
	}
	cout << ret << endl;
}
/**************************************************************************************/
#elif 0
//判断素数
#include <iostream>
using namespace std;
bool is_suNum(int n) {
	if (n <= 1)
		return false;
	for (int i = 2; i < n; i++) {
		if (n % i == 0) {
			return false;
			break;
		}
	}
	return true;
}
int main() {
	int num;
	cin >> num;
	if (is_suNum(num)) {
		cout << "T" << endl;
	}
	else {
		cout << "F" << endl;
	}
}
/**************************************************************************************/
#elif 0
//进制转换
#include <iostream>
#include <stack>
using namespace std;
//将十进制转换为十六进制
stack<int> change(int num) {
	stack<int> charStack;
	while (num) {
		charStack.push(num % 16);
		num /= 16;
	}
	return charStack;
}
int main() {
	char str[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
	int num;
	cin >> num;
	stack<int> numStack = change(num);
	while (!numStack.empty()) {
		int ret = numStack.top();
		cout << str[ret];
		numStack.pop();
	}
}
/**************************************************************************************/
#elif 0
//纯粹合数
#include <iostream>
using namespace std;
//合数判断:除了1和本身外,还能被其他非0整数整除
bool isHe(int num) {
	if (num <= 1)
		return false;
	for (int i = 2; i < num; i++) {
		if (num % i == 0) {
			return true;
		}
	}
	return false;
}
int main() {
	//求所有的三位纯粹合数
	for (int i = 100; i <= 999; i++) {
		int flag = 1;
		int n = i;
		while (n) {
			if (isHe(n)) {
				n /= 10;
				continue;
			}
			else {
				flag = 0;
				break;
			}
		}
		if (flag) {
			cout << i << ' ';
		}
	}
}
/**************************************************************************************/
#elif 0
//找零
//商家有零钱无限张,面值为:50,20,10,5,1
//问:如果想找x元,问如何找零使得总的零钱张数最少
#include <iostream>
using namespace std;
int main() {
	int x;
	cin >> x;
	int wu = x / 50;
	x = x - wu * 50;
	int er = x / 20;
	x = x - er * 20;
	int sh = x / 10;
	x = x - sh * 10;
	int w = x / 5;
	x = x - w * 5;
	int y = x / 1;
	printf("50元%d张,20元%d张,10元%d张,5元%d张,1元%d张\n一共%d张\n", wu, er, sh, w, y, wu + er + sh + w + y);

}
/**************************************************************************************/
#elif 0
//改进
#include <iostream>
using namespace std;
int main() {
	int money[] = { 50,20,10,5,1 };
	int count = 0;
	int x,i=0;
	cin >> x;
	int ret = x;
	while (x) {
		count += x / money[i];
		x = x % money[i];
		i++;
	}
	cout << ret << "找零总张数为:" << count << endl;
}
/**************************************************************************************/
#elif 0
//寻找最小值
#include <iostream>
using namespace std;
int main() {
	int a[100][100];
	int n;
	cin >> n;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cin >> a[i][j];
		}
	}
	int min = a[0][0];
	int minI = 0, minJ = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			if (a[i][j] < min) {
				min = a[i][j];
				minI = i;
				minJ = j;
			}
		}
	}
	cout << "最小值为:" << min << ",行号为" << minI+1 << ",列号为" << minJ+1 << endl;
}
/**************************************************************************************/
#elif 0
#include <iostream>
using namespace std;
bool fun(int n) {
	//判断n能否被3且7整除
	if (n % 3 == 0 && n % 7 == 0) {
		return true;
	}
	return false;
}
int main() {
	int count = 0,sum=0;
	for (int i = 0; i <= 5000;i++) {
		if (fun(i)) {
			count++;
			cout << i << ' ';
			sum += i;
			if (count==10) {
				count = 0;
				cout << endl;
			}
		}
	}
	cout << endl << sum;
}
/**************************************************************************************/
#elif 0
//绝对素数
#include <iostream>
using namespace std;
//判断素数
bool isSu(int n){
	if (n <= 1)
		return false;
	for (int i = 2; i < n; i++) {
		if (n % i == 0) {
			return false;
		}
	}
	return true;
}
//反转
int reNum(int num) {
	int ret = 0;
	while (num) {
		ret = ret * 10 + (num % 10);
		num /= 10;
	}
	return ret;
}
int main() {
	for (int i = 10; i < 100; i++) {
		if (isSu(i) && isSu(reNum(i))) {
			cout << i << ' ';
		}
	}
}
/**************************************************************************************/
#elif 0
//字符串加密
#include <iostream>
using namespace std;
void encode(char* s, char* d) {
	int i;
	char ch[2][10] = { "aceghjlnp","fonptiude" };
	for (; *s != '\0'; s++, d++) {
		for (i = 0; i < 9; i++) {
			if (*s == ch[0][i]) {
				*d = ch[1][i];
				break;
			}
		}
		if (i == 9) {
			*d = *s;
		}
	}
	*d = '\0';
}
int main() {
	char str[80] = "those word will be changed";
	char td[80];
	encode(str, td);
	puts(td);
}
/**************************************************************************************/
#elif 1
//亲密数对
#include <iostream>
using namespace std;
//求因子和
int fun(int n) {
	int sum = 0;
	for (int i = 1; i < n; i++) {
		if (n % i == 0)
			sum += i;
	}
	return sum;
}
int main() {
	/*
	for (int i = 6; i <= 10000; i++) {
		for (int j = 6; j <= 10000; j++) {
			if (i != j && fun(i) == j && fun(j) == i) {
				cout << i << ' ' << j << endl;
			}
		}
	}//时间复杂度高
	*/
	int a, b;
	for (int a = 6; a <= 10000; a++) {
		b = fun(a);
		if (a == fun(b) && a != b) {
			cout << a << ',' << b << endl;
		}
	}
}
/**************************************************************************************/
#elif 0                                           




#endif
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值