首页 > 编程语言 >深圳大学-程序设计基础-OJ

深圳大学-程序设计基础-OJ

时间:2025-01-10 17:30:51浏览次数:3  
标签:return OJ int ans ++ num 深圳大学 程序设计 include

A. 100到n以内的水仙花数

题目描述

若3位数ABC满足ABC=A3+B3+C3,则称其为水仙花数.

例如:153=13+53+3^3,所以153是水仙花数.

你的任务是输出100~n中所有的水仙花数.每行输出一个。

输入

输入n,表示100到n之间的范围

输出

请输出100~n中所有的水仙花数.每行输出一个.

样例输出只输出一个水仙花数,你必须将所有的水仙花数都输出。

输入样例

200

输出样例

153

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
void solve() {
	int n;
	cin >> n;
	for (int i = 100; i <= n; i++) {
		int a = i % 10;
		int b = i / 10 % 10;
		int c = i / 100;
		if (i == a * a * a + b * b * b + c * c * c) {
			cout << i << '\n';
		}
	}

}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

B. 求a+aa+aaa+…+aa…a之和(循环)

题目描述

编程计算a+aa+aaa+…+aa…a(n个a)的值,a的取值范围为0—9,n的取值范围为0—5。n和a的值都由键盘输入,均为整数。

输入

键盘输入a和n

输出

求和

输入样例

2
4

输出样例

2468

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
void solve() {
	int a, n;
	cin >> a >> n;
	long long sum = 0;
	int add = a;
	for (int i = 1; i <= n; i++) {
		sum += add;
		add *= 10;
		add += a;
	}
	cout << sum;

}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

A. 图案

题目描述

用循环语句打印一个n层图案,从上往下,每层的‘#’的数量分别是1,3,5,…,2*n-1

例如n=3为

#

###

#####

输入

输入一个n,表示要打印图案的层数

输出

输出图案

输入样例

3

输出样例

  #
 ###
#####

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
void solve() {
	int n;
	cin >> n;
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j < n - i; j++) {
			cout << " ";
		}
		for (int k = 1; k <= 2 * i - 1; k++) {
			cout << '#';
		}
		cout << '\n';
	}
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

B. 完数判断(双层循环)

题目描述

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3;因此是“完数”。编程对输入的数字(假设该数字小于1000)判断是否是“完数”并输出其所有因子。

输入

判断的次数和每次输入的数字

输出

该数是否完数和其所有因子

输入样例

3
5
32
6

输出样例

no,1
no,1,2,4,8,16
yes,1,2,3

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
void solve() {
	int t;
	cin >> t;
	while (t--) {
		int x;
		cin >> x;
		vector<int> path;
		int sum = 0;
		for (int i = 1; i < x; i++) {
			if (x % i == 0) {
				sum += i;
				path.push_back(i);
			}
		}
		if (sum == x) {
			cout << "yes,";
			for (int i = 0; i < path.size(); i++) {
				if (i != path.size() - 1) {
					cout << path[i] << ",";
				}
				else {
					cout << path[i];
				}
			}
			cout << '\n';
		}
		else {
			cout << "no,";
			for (int i = 0; i < path.size(); i++) {
				if (i != path.size() - 1) {
					cout << path[i] << ",";
				}
				else {
					cout << path[i];
				}
			}
			cout << '\n';
		}
	}

}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

C. 数字输出

题目描述

给出一个不多于5位的正整数,要求如下:

1、求出它是几位数

2、分别输出每一位上的数字,数字之间用1个空格隔开

3、按逆序输出各位数字,例如原数为321,应输出123

输入

输入一个不大于5位的正整数

输出

第一行输出位数

第二行从左到右输出每一位上的数字,数字间用一个空格分开,注意最后一个数字后面没有空格

第三行按逆序输出这个数

输入样例

12345

输出样例

5
1 2 3 4 5
54321

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
void solve() {
	int num;
	cin >> num;
	int cnt_num = cnt(num);
	cout << cnt_num << '\n';
	int tmp = num;
	for (int i = 0; i < cnt_num; i++) {
		int c = num / pow(10, cnt_num - i - 1);
		if (i != cnt_num - 1) {
			cout << c << " ";
		}
		else {
			cout << c;
		}
		num -= c * pow(10, cnt_num - i - 1);
	}
	cout << '\n';
	while (tmp) {
		cout << tmp % 10;
		tmp /= 10;
	}
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

D. 素数和(双层循环)

题目描述

输入数字范围n,m(n>=0, m>=0, n<=m),输出[n,m]区间中的所有素数和。

输入

测试次数T

每组测试数据一行,数字范围n m

输出

对每组测试数据,如果有素数,输出二行:

第一行:输出[n,m]间的素数

第二行:输出[n,m]间的素数和

如果没有素数,输出NO

输入样例

3
0 10
10 30
24 28

输出样例

2 3 5 7 
17
11 13 17 19 23 29 
112
NO

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
void solve() {
	int t;
	cin >> t;
	while (t--) {
		int a, b;
		cin >> a >> b;
		int sum = 0;
		for (int i = max(2, a); i <= b; i++) {
			if (isPrime(i)) {
				cout << i << " ";
				sum += i;
			}
		}
		if (sum == 0) {
			cout << "NO" << '\n';
		}
		else {
			cout << '\n' << sum << '\n';
		}


	}
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

A. 求一行字符中字母、空格、数字等的个数(循环)

题目描述

输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。

输入

一行字符

输出

统计值

输入样例

aklsjflj123 sadf918u324 asdf91u32oasdf/.';123

输出样例

23 16 2 4

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <cstring>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
void solve() {
	string input;
	getline(cin, input); 

	int num_en = 0, num_num = 0, num_space = 0, num_others = 0;

	for (char c : input) {
		if (isalpha(c)) {
			num_en++;
		}
		else if (isdigit(c)) {
			num_num++;
		}
		else if (isspace(c)) {
			num_space++;
		}
		else {
			num_others++;
		}
	}
	cout << num_en << " " << num_num << " " << num_space << " " << num_others;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

B. 迭代法求平方根(循环)

题目描述

用迭代法求a的平方根。求a的平方根的迭代公式为: X[n+1]=1/2(X[n]+a/X[n]) 要求前后两次求出的得差的绝对值少于0.00001。 输出保留3位小数

输入

a

输出

a的平方根X

输入样例

4

输出样例

2.000

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <cstring>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	if (x < 2) {
		return false;
	}
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
bool isHuiwen(int num) {
	string s = to_string(num);
	int len = s.size();
	for (int i = 0; i < len / 2; i++) {
		if (s[i] != s[len - i - 1]) return false;
	}
	return true;
}
void solve() {
	double ans;
	double pre = 0.00001;
	int a;
	cin >> a;
	double x = a;  
	do {
		ans = 0.5 * (x + a / x);
		if (fabs(ans - x) < pre) 
			break;
		x = ans;
	} while (true);

	cout << fixed << setprecision(3) << ans << endl;
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

C. 箱子匹配

题目描述

每个箱子都有长宽高,我们需要判断一个箱子能否放入另一个箱子中。

例如有箱子A的尺寸是 3 x 4 x 5,箱子B的尺寸 是 5 x 6 x 4,经过比较判断,可以知道箱子A能够放入箱子B中,我们就说箱子A匹配箱子B。

注意,当两个箱子尺寸相等,我们也认为它们匹配。

输入

第一行输入参数T,表示有T个测试实例

第二行输入第1组实例的箱子A的长、宽、高,输入数值为小于1000的自然数

第三行输入第1组实例的箱子B的长、宽、高,输入数值为小于1000的自然数

以此类推

输出

如果两个箱子匹配,输出yes,否则输出no。逐行输出每一组的箱子匹配结果。

输入样例

3
3 4 5
5 6 4
5 6 4
3 4 5
5 6 7
7 4 7

输出样例

yes
yes
no

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <cstring>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	if (x < 2) {
		return false;
	}
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
bool isHuiwen(int num) {
	string s = to_string(num);
	int len = s.size();
	for (int i = 0; i < len / 2; i++) {
		if (s[i] != s[len - i - 1]) return false;
	}
	return true;
}
bool check(int x, int y, int xx, int yy, int r) {
	return (pow(x - xx, 2) + pow(y - yy, 2) <= pow(r, 2));
}
void solve() {
	int T;
	cin >> T;

	while (T--) {
		int A[3], B[3];

		cin >> A[0] >> A[1] >> A[2];
		cin >> B[0] >> B[1] >> B[2];
		bool flag = false;
		if ((A[0] >= B[0] && A[1] >= B[1]) || (B[0] >= A[0] && B[1] >= A[1])){
			flag = true;
		}
		cout << (flag ? "yes" : "no") << endl;
	}

}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

D. 打印漏斗

题目描述

打印出一个底部有n个*的漏斗

输入

第一行输入一个T;表示有T组测试数据

下面每一行都有一个n表示漏斗底部*的个数

n保证是奇数

输出

输出打印结果

两个测试答案之间要用换行分割

输入样例

3
11
13
15

输出样例

***********
 *********
  *******
   *****
    ***
     *
    ***
   *****
  *******
 *********
***********

*************
 ***********
  *********
   *******
    *****
     ***
      *
     ***
    *****
   *******
  *********
 ***********
*************

***************
 *************
  ***********
   *********
    *******
     *****
      ***
       *
      ***
     *****
    *******
   *********
  ***********
 *************
***************

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <cstring>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
void solve() {
	int t;
	cin >> t;
	while (t--) {
		int n;
		cin >> n;
        for (int i = n; i > 0; i -= 2) {
            int spaces = (n - i) / 2;
            for (int j = 0; j < spaces; ++j) {
                cout << " ";
            }
            for (int j = 0; j < i; ++j) {
                cout << "*";
            }
            cout << endl;
        }
        for (int i = 3; i <= n; i += 2) {
            int spaces = (n - i) / 2;
            for (int j = 0; j < spaces; ++j) {
                cout << " ";
            }
            for (int j = 0; j < i; ++j) {
                cout << "*";
            }
            cout << endl;
        }
		cout << '\n';
	}

}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

E. 砖石奖励(循环)

题目描述

海盗们决定用“投环套物”的方式来奖励最近一次行动中贡献最大的人。他们将1克拉钻石排成矩阵,通过投掷圆环决定奖励的钻石的数量。假设每个钻石的x和y坐标都是0到99的整数,输入矩阵长、宽及圆形,计算这个人能获得多少克拉的钻石。

输入

测试次数

每组测试数据包含两行,第一行为矩阵的行数和列数,第二行为圆心坐标点及半径。

输出

对每组测试数据,输出圆形内的钻石克拉数(包括边界上的钻石)。

输入样例

2
4 4
2 1 1
10 10
5 0 3

输出样例

5
18

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <cstring>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	if (x < 2) {
		return false;
	}
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
bool isHuiwen(int num) {
	string s = to_string(num);
	int len = s.size();
	for (int i = 0; i < len / 2; i++) {
		if (s[i] != s[len - i - 1]) return false;
	}
	return true;
}
bool check(int x, int y, int xx, int yy, int r) {
	return (pow(x - xx, 2) + pow(y - yy, 2) <= pow(r, 2));
}
void solve() {
	int t;
	cin >> t;
	while (t--) {
		int a, b;
		cin >> a >> b;
		int xx, yy, r;
		cin >> xx >> yy >> r;
		int ans = 0;

		for (int i = 0; i < a; i++) {
			for (int j = 0; j < b; j++) {
				if (check(i, j, xx, yy, r)) {
					ans++;
				}
			}
		}

		cout << ans << '\n';
	}
}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

F. 五位以内的对称素数(双层循环)

题目描述

判断一个数是否为对称且不大于五位数的素数。

意思是小于100,000的数

输入

第一行:测试数据组数T

接下来包含T行,每行由1个不大于五位数的正整数构成。

输出

对于每个正整数,如果该数是不大于五位数的对称素数,则输出”Yes”,否则输出”No”,每个判断结果单独列一行。

输入样例

3
11
101
272

输出样例

Yes
Yes
No

代码

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <cstring>
#define PI 3.1415926
using namespace std;
int cnt(int num) {
	int ans = 0;
	while (num) {
		num /= 10;
		ans++;
	}
	return ans;
}
bool isPrime(int x) {
	if (x < 2) {
		return false;
	}
	for (int i = 2; i < x; i++) {
		if (x % i == 0) {
			return false;
		}
	}
	return true;
}
bool isHuiwen(int num) {
	string s = to_string(num);
	int len = s.size();
	for (int i = 0; i < len / 2; i++) {
		if (s[i] != s[len - i - 1]) return false;
	}
	return true;
}
void solve() {
	int t;
	cin >> t;
	while (t--) {
		int num;
		cin >> num;
		if (isHuiwen(num) && isPrime(num)) {
			cout << "Yes" << endl;
		}
		else {
			cout << "No" << endl;
		}
	}

}
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	solve();
	return 0;
}

标签:return,OJ,int,ans,++,num,深圳大学,程序设计,include
From: https://blog.csdn.net/qq_73179413/article/details/145062078

相关文章

  • 计算机毕业设计—97923 志愿服务管理小程序设计与实现(源码免费领)
    摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,志愿服务管理小程序被用户普遍使用,方便用户能够可以随时进行在线查看志愿服务管理的数据信息管理,特开发了志愿服务管......
  • 基于单片机的智能苗圃灌溉系统设计与实现:嵌入式程序设计
    基于单片机的智能苗圃灌溉系统设计与实现:嵌入式程序设计引言随着智能化农业的迅速发展,传统的农业灌溉模式逐渐被现代化智能灌溉系统取代。智能苗圃灌溉系统作为智能农业的重要组成部分,通过结合传感器技术、单片机控制技术以及数据通信技术,能够实现苗圃灌溉的自动化与智能......
  • cv::reprojectImageTo3D 使用
    cv::reprojectImageTo3D是OpenCV中的一个函数,用于将视差图像转换为3D点云。它依赖于相机的内参和视差值来计算每个像素的3D坐标。以下是该函数的基本使用方法。函数原型voidcv::reprojectImageTo3D(constcv::Mat&disparity,cv::Mat&_3dImage,constcv......
  • 【c++实战项目】负载均衡式在线OJ
    主页:醋溜马桶圈-CSDN博客专栏:实战项目_醋溜马桶圈的博客-CSDN博客gitee:mnxcc(mnxcc)-Gitee.com项目源码文件版:OnlineJudge_file:负载均衡在线OJ项目基于文件版本数据库版:mnxcc/OnlineJudge_MySQL目录1.项目目标2.技术与开发环境2.1技术2.2开发环境3.项目宏观......
  • 基于Springboot+Uniapp的家校通平台微信小程序设计与实现
    ......
  • 基于Springboot+Uniapp的学生宿舍管理微信小程序设计与实现
    ......
  • 偶斐波那契数列性质与欧拉计划第2题 Properties of Fibonacci numbers and Project Eu
    Problem2EvenFibonaccinumbersEachnewtermintheFibonaccisequenceisgeneratedbyaddingtheprevioustwoterms.Bystartingwith1and2,thefirst10termswillbe:1,2,3,5,8,13,21,34,55,89,…ByconsideringthetermsintheFibonacci......
  • BZOJ4399 魔法少女LJJ —— 线段树合并
    题意提示对100%的数据0<=m<=400000,c<=7,所有出现的数均<=1000000000,所有出现的点保证存在【HINT】请认真阅读题面考语文分析由于只有合并,没有分裂,所以只需要考虑合并联通块中的信息即可。具体而言,在联通块的根对应的线段树下标存储该联通块下元素对应的权值。直接线段......
  • 数据oj题——有效的括号
    好了,上一篇我们写过栈的实现的文章了,此外,我们现在来利用栈来写一道OJ题20.有效的括号-力扣(LeetCode)这道题呢,由于还没有学到c++,我们还是使用c语言的形来写,而c语言有没有栈的库,所以就得我们亲自手搓一个。即我们上一篇写过的栈的实现。注意的是:上一篇我们写的栈的实现是......
  • [BZOJ3159] 决战 题解
    个人感觉各方面难度高于《在美妙的数学王国中畅游》,也不知道是不是求导的关系,这题\(luogu\)难度评级还更低。不过感觉这题作完对\(LCT\)理解更顺畅了。前四个操作简单,关键在第五人格操作。注意力惊人的注意到我们无法像普通\(Splay\)一样,直接对\(LCT\)中的\(Splay\)......