2025xdoj不完全攻略

0,写在前面

0-1,声明

本文是作者为了复习而做的整理,不对任何人因为本文而导致的后果负责。

代码是C++语言,需要的话可以用AI转换语言。

作者看到前辈写的2024XDOJ题目及答案后萌生仰慕效仿之心,遂落笔写下此篇,以作验证所学之用。码风,思路有不足之处,欢迎各路大佬指点,让各位大佬见笑qwq

25/10/20-完全没人看,无限期停更中ing

0-2,目录

1,题解及注释

T56直角三角形

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int a = 0, b = 0, c = 0;
int main(void) {
	cin >> a >> b >> c;
	a*a + b*b == c*c ? cout << a*b : cout << "no";

	return 0;
}

T63工资计算

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int run(int s) {
	if (s <= 3500) return 0;
	int a = s - 3500;
	if (a <= 1500) return int(0.03 * a);
	if (a <= 4500) return int(0.03 * 1500 + 0.1 * (a - 1500));
	if (a <= 9000) return int(0.03 * 1500 + 0.1 * (4500 - 1500) + 0.2 * (a - 4500));
	if (a <= 35000) return int(0.03 * 1500 + 0.1 * (4500 - 1500) + 0.2 * (9000 - 4500) + 0.25 * (a - 9000));
	return int(0.03 * 1500 + 0.1 * (4500 - 1500) + 0.2 * (9000 - 4500) + 0.25 * (35000 - 9000) + 0.3 * (a - 35000));
}
int main(void) {
	int s = 0;
	cin >> s;
	cout << s - run(s);

	return 0;
}

T64自然数分解

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int main(void) {
	int m = 0, sum = 0;
	cin >> m;
	for (int i = 1; i + 2 * (m - 1) <= m * m * m; i += 2) {
		sum = 0;
		for (int j = 0; j < m; j += 1) {
			sum += i + 2 * j;
		}
		if (sum == m * m * m) {
			for (int j = 0; j < m; j += 1) {
				cout << i + 2 * j << " ";
			}
			cout << endl;
		}
	}


	return 0;
}

T66平均数

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int n=0,sum=0,mid=0;
int main(void){
	cin>>n;
	for(int i=1;i<=n;i+=1){
		cin>>mid;
		sum+=mid;
	}
	printf("%.2f",(1.0*sum)/(1.0*n));

	return 0;
}

T87跳一跳

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int ans = 0, c = -1, c2 = 0;
int main(void) {
	while (c) {
		cin >> c;
		if (c == 1) ++ans, c2 = 0;
		else if (c == 2) ++c2, ans += 2 * c2;
	}
	cout << ans;

	return 0;
}

T94整数排序

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int a[4]{0};
int main(void){
	for(int i=0;i<4;i+=1){
		cin>>a[i];
	}
	sort(a,a+4);
	for(int i=0;i<4;i+=1){
		cout<<a[i]<<" ";
	}

	return 0;
}

T97输出 26 个英文字母

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int main(void) {
	for (char c = 'a'; c <= 'z'; c += 1) cout << c << " ";
	cout << "\n";
	for (char c = 'z'; c >= 'a'; c -= 1) cout << c << " ";

	return 0;
}

T93整数比较 1

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int a=0,b=0;
int main(void){
	cin>>a>>b;
	a>b?cout<<a%10<<" "<<b*b:cout<<b%10<<" "<<a*a;

	return 0;
}

T9计算球体重量

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;
const float iron = 7.86;
const float gold = 19.3;
const double pi = 3.1415926;

int ird = 0, god = 0;
double ir = 0, go = 0;

inline double turecm(double d) {
	double mid = d / 20;
	return mid;
}
inline double calcu(float p, float r) {
	double mid = p * (4.0 / 3.0) * pi * (r * r * r);
	return mid;
}
int main(void) {
	scanf("%d %d", &ird, &god);

	ir = turecm(ird);
	go = turecm(god);

	printf("%.3f %.3f\n", calcu(iron, ir), calcu(gold, go));



	return 0;
}

这里有一点:如果你尝试过用cout输出pi,你会发现它被四舍五入了,这是cout输出时自带的,但是可以解决的。

小数输出时printf会更好用。

T10温度转换

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int k=0;

inline double tem(void){
	return (k -32)*(5.0/9.0);//重点
}
int main(void){
	cin>>k;
	
	printf("%.2f",tem());
	
	

	return 0;
}

T11整数简单运算

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int a=0,b=0;
int main(void){
	cin>>a>>b;
	
	cout<<a+b<<"\n"<<a-b<<"\n"<<a*b<<"\n"<<a/b;
	

	return 0;
}

T15A+B+C

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

long long a=0,b=0,c=0;
int main(void){
	cin>>a>>b>>c;
	
	cout<<a+b+c;
	

	return 0;
}

T16字符输入输出

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

string s;

inline void output(void){
	char mid;
	for(int i=0;i<s.size();i+=2){
		mid = s[i]+32;//ASCII码
		cout<<mid;
	}
	cout<<"!\n";
}
int main(void){
	cin>>s;
	
	output();
	

	return 0;
}

如果你用的是scanf_s(),如下:

char a, b, c, d, e;
scanf_s("%c|%c|%c|%c|%c", &a, &b, &c, &d, &e);

发现报错了,那么要记得scanf_s要传入字节数,像这样:

char c;
scanf_s("%c", &c, 1);

这是因为scanf_s需要一个表示缓冲区大小的参数,是为了提升安全性而设计的强制要求,这也是它与scanf的核心区别。

T19实数运算

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

float l = 0, w = 0, h = 0;
int main(void) {
	cin >> l >> w >> h;
	float V = 1.0 * l * w * h;//重点
	printf("%.3f\n", V);



	return 0;
}

T21数位输出

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

string s;
char mid;
int main(void) {

	cin >> s;

	for (int i = 0; i < s.size(); i += 1) {
		mid = s[i];
		cout << mid << " ";
	}



	return 0;
}

T42整除判断

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int a = 0, b = 0;

inline void pd(void) {
	int mid = (a / b) * b;
	if (mid == a) cout << "yes\n";
	else cout << a / b << " " << a - mid << "\n";
}
int main(void) {
	cin >> a >> b;

	pd();

	return 0;
}

T47冰箱温度预测

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int h = 0, m = 0;
double t = 0;

inline void tem(void) {
	double T = 0;
	T = ((4 * t * t) / (t + 2)) - 20;
	printf("%.2f\n", T);
}
int main(void) {
	cin >> h >> m;

	t = h * 1.0 + (m / 60.0);
	tem();


	return 0;
}

T48除法计算器

#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int m = 0, n = 0, q = 0, r = 0;
int main(void) {
	cin >> m >> n >> q >> r;

	if (m == n * q + r) cout << "yes\n";
	else {
		cout << m / n << " " << m - (m / n)*n << "\n";
	}

	return 0;
}

T79计算平均值

#include<bits/stdc++.h>

using namespace std;

double a = 0, b = 0;
int main(void) {
	cin >> a;
	for (int i = 1; i <= 2; i += 1) {
		cin >> b;
		a += b;
	}
	printf("%.2f", a / 3.0);
	return 0;
}

T89计算球体的体积

#include<bits/stdc++.h>

using namespace std;

double r = 0;
int main(void) {
	cin >> r;
	printf("%.2f", 3.14 * (4.0 / 3.0)*pow(r, 3));
	return 0;
}

T90求三位整数各位数字之和

#include<bits/stdc++.h>

using namespace std;
int ans = 0;
string s;
int main(void) {
	cin >> s;
	for (int i = 0; i < s.size(); i += 1) ans += int(s[i] - '0');
	cout << ans;
	return 0;
}

T91

#include<bits/stdc++.h>

using namespace std;

double a = 0, b = 0, c = 0;
double p = 0, s = 0;
int main(void) {
	cin >> a >> b >> c;
	p = (a + b + c) / 2.0;
	s = sqrt(p * (p - a) * (p - b) * (p - c));
	printf("%.2f", s);
	return 0;
}

T92工资发放

//贪心思想
#include<bits/stdc++.h>

using namespace std;

int n = 0;
int a[6] {0};
int main(void) {
	cin >> n;
	a[0] = n / 100,
	       a[1] = (n % 100) / 50,
	              a[2] = ((n % 100) % 50) / 20,
	                     a[3] = (((n % 100) % 50) % 20) / 10,
	                            a[4] = ((((n % 100) % 50) % 20) % 10) / 5,
	                                   a[5] = ((((n % 100) % 50) % 20) % 10) % 5;
	for(int i=0;i<6;i+=1) cout<<a[i]<<" ";
	return 0;
}

这个代码很糟糕,因为很多代码重复了

T98简单程序

#include<bits/stdc++.h>

using namespace std;

int n = 0;
int main(void) {
	cin >> n;
	if (n % 2 == 0 && n % 3 != 0 && n % 5 != 0) cout << "Nice";
	else if (n % 3 == 0 && n % 2 != 0 && n % 5 != 0) cout << "Good";
	else if (n % 5 == 0 && n % 2 != 0 && n % 3 != 0) cout << "Best";
	else cout << "Bad";
	return 0;
}

T110判断奇偶性

#include<bits/stdc++.h>

using namespace std;


int main(void) {
	int n = 0;
	cin >> n;
	(n & 1) == 1 ? cout << "奇数" : cout << "偶数";
	return 0;
}

T111

#include<bits/stdc++.h>

using namespace std;


int main(void) {
	int n = 0;
	cin >> n;
	n % 5 == 0 && n % 7 == 0 ? cout << "yes" : cout << "no";
	return 0;
}

三目运算符

T113出租车计价

#include<bits/stdc++.h>

using namespace std;

double d = 0, t = 0, ans = 10.0;
int main(void) {
	cin >> d >> t;

	if (d > 3) {
		if (d <= 10) {
			ans += (d - 3.0) * 2.0;
		} else {
			ans += 14.0 + (d - 10.0) * 3.0;
		}
	}
	ans += 2.0 * int(t / 5.0);

	printf("%d\n", int(ans));

	return 0;
}

T125购房贷款计算

#include<bits/stdc++.h>

using namespace std;

double r = 0, n = 0;
int main(void) {
	cin >> r >> n;

	printf("%.2f", pow(1 + r, n));

	return 0;
}

T126购房贷款计算

#include<bits/stdc++.h>

using namespace std;

double d = 0, p = 0, r = 0;
int main(void) {
	cin >> d >> p >> r;

	printf("%.2f", log(p / (p - d * r)) / log(1 + r));

	return 0;
}

T374

#include<bits/stdc++.h>

using namespace std;

double c = 0, m = 0, s = 0;
int main(void) {
	cin >> m >> s;
	m += s / 60.0;

	if (m <= 10) c = 100.0 - 5.0 * m;
	else if (m <= 30) c = 50.0 - (m - 10.0);
	else if (m <= 50) c = 30.0 - ((m - 30.0) / 2.0);
	else c = 20.0;

	printf("%.1f", c);

	return 0;
}

T388字符统计

#include<bits/stdc++.h>

using namespace std;

char c;
int cnt = 0;
int main(void) {
	for (int i = 1; i <= 5; i += 1) {
		cin >> c;
		if (c == 'a' || c == 'A') ++cnt;
	}

	cout << cnt;

	return 0;
}

T405优惠促销

#include<bits/stdc++.h>

using namespace std;

bool m = 0;
double n = 0;
double pay = 0;

int main(void) {
	cin >> m >> n;

	if (m) {
		cout << "yes ";
		if (n >= 500) pay = 0.8 * n;
		else if (n >= 350) pay = 0.85 * n;
		else if (n >= 200) pay = 0.9 * n;
		else pay = 1.0 * n;
	} else {
		cout << "no ";
		if (n >= 500) pay = 0.9 * n;
		else if (n >= 350) pay = 0.95 * n;
		else pay = 1.0 * n;
	}

	printf("%.1f %.1f %.1f", n, pay, n - pay);

	return 0;
}

T406表达式计算

#include<bits/stdc++.h>

using namespace std;

char c;
int main(void) {
	scanf("%c", &c);
	cout << c << " ";

	if (c >= 97 && c <= 122) {
		c += 3;
		if (c > 122) c -= 26;
	} else if (c >= 65 && c <= 90) {
		c -= 2;
		if (c < 65) c += 26;
	} else if (c >= 48 && c <= 57) c = 9 - (c - 48) + 48;
	else if (c == 32) c = '*';
	else c = '#';

	cout<<c;

	return 0;
}

T449套餐选择

#include<bits/stdc++.h>

using namespace std;

double t = 0, a = 0, b = 0;
int main(void) {
	cin >> t;

	a = 0.6 * t, b = 50.0 + 0.4 * t;
	printf("%.2f\n%.2f\n", a, b);
//	if (a < b) cout << "A\n";
//	else cout << "B\n";
	if (t < 250) cout << "A\n";
	else cout << "B\n";

	return 0;
}

T457交换数组元素

#include<bits/stdc++.h>

using namespace std;

int n = 0, a[55] {0}, b[55] {0};
int main(void) {
	cin >> n;

	for (int i = 1; i <= n; i += 1) cin >> a[i];
	for (int i = 1; i <= n; i += 1) cin >> b[i];

	for (int i = 1; i <= n; i += 1) cout << b[i] << " ";
	for (int i = 1; i <= n; i += 1) cout << a[i] << " ";

	return 0;
}

T458

#include<bits/stdc++.h>

using namespace std;

int ans=0;
string s;
int main(void){
	cin>>s;
	
	for(int i=0;i<s.size();i+=1){
		ans+=s[i]-48;
	}
	
	cout<<ans<<"\n";

	return 0;
}

T459

#include<bits/stdc++.h>

using namespace std;

string s;

inline bool isp(void) {
	int l = 0, r = s.size() - 1;
	while (l < r) {
		if (s[l] != s[r]) return 0;
		++l, --r;
	}
	return 1;
}
int main(void) {
	cin >> s;

	if (isp()) {
		cout << "Yes\n";
	} else {
		cout << "No\n";
	}

	return 0;
}

T460

#include<bits/stdc++.h>

using namespace std;

int a[13] {0}, n = 0;

inline void init(void) {
	a[1] = 1, a[2] = 2, a[3] = 6, a[4] = 24, a[5] = 120, a[6] = 720, a[7] = 5040, a[8] = 40320, a[9] = 362880, a[10] = 3628800, a[11] = 39916800, a[12] = 479001600;
}
int main(void) {
//	a[1] = 1;
//	for (int i = 2; i <= 12; i += 1) {
//		a[i] = a[i - 1] * i;
//	}
//
//	for (int i = 1; i <= 12; i += 1) {
//		printf("a[%d]=%d,", i, a[i]);
//	}
	cin >> n;
	init();
	cout << a[n];

	return 0;
}

T461素数检查

#include<bits/stdc++.h>

using namespace std;

int n = 0;
inline bool pri(void) {//感兴趣可以了解一下质数判断的常用算法
	for (int i = 2; i * i <= n; i += 1) {
		if (n % i == 0) return 0;
	}
	return 1;
}
int main(void) {
	cin >> n;

	if (pri()) {
		cout << "Yes\n";
	} else {
		cout << "No\n";
	}

	return 0;
}

T526序列分段求和

#include<bits/stdc++.h>

using namespace std;

int a[1234] {0};
int ans = 0, n = 0, mid = 0;
int main(void) {
	cin >> n >> a[1];

	for (int i = 2; i <= n; i += 1) cin >> a[i];

	ans = a[1], mid = a[1];
	for (int i = 2; i <= n; i += 1) {
		if (a[i] == a[i - 1]) {
			mid += a[i];
			ans = max(mid, ans);
		} else {
			mid = a[i];
			ans = max(mid, ans); //针对段长为1的情况
		}
	}

	cout << ans << "\n";

	return 0;
}

T568锥体重量

#include<bits/stdc++.h>

using namespace std;
const double pi = 3.1415926;
const double ip = 7.86;
const double gp = 19.3;

double d = 0, h = 0;

inline int kil(double p) {
	return int((p * ((pi * pow(d / 2, 2) * h) / 3)) / 1000);
}
int main(void) {
	cin >> d >> h;

	printf("%d %d\n", kil(ip), kil(gp));

	return 0;
}

T569数位输出

#include<bits/stdc++.h>

using namespace std;

int a=0,b=0,c=0,mid=0;
int main(void){
	cin>>a;
	a=abs(a);
	
	b=a%100;
	a/=100;
	
	c=b%10;
	b/=10;
	
	printf("%d %d %d\n%d %d %d\n",a,b,c,c,b,a);

	return 0;
}

T570四则运算

#include<bits/stdc++.h>

using namespace std;

int a=0,b=0;
int main(void){
	cin>>a>>b;
	
	cout<<a+b<<" "<<a-b<<" "<<a*b<<" "<<a/b<<" "<<a%b<<"\n";
	
	return 0;
}

T571几何体的计算

#include<bits/stdc++.h>

using namespace std;
const double pp = 0.785;
const double pi = 3.1415926;

double r1 = 0, r2 = 0;
double h1 = 0, h2 = 0;
double V = 0, M = 0;

int main(void) {
	cin >> r1 >> h1 >> r2 >> h2;

	V = pi * (h1 * pow(r1 / 2, 2) - (h2 * pow(r2 / 2, 2)) / 3);
	M = V * pp;

	printf("%d %d\n", int(V), int(M));

	return 0;
}

T572模型参数计算

#include<bits/stdc++.h>

using namespace std;

double a = 0, b = 0;
int main(void) {
	cin >> a >> b;

	a = 1.0 * a, b = 1.0 * b;
	double cl = a + sqrt(b * a + 1.0);
	double td = a * pow(cl + b, 2);
	double sp = td * cl + pow(b, 2);

	printf("CL=%d tD=%d SP=%d\n", int(cl), int(td), int(sp));


	return 0;
}

T573时间转换

#include<bits/stdc++.h>

using namespace std;

int M = 0, mid = 0;
int h = 0, m = 0;

inline int tige(int ti) {
	mid = M / ti;
	M = M % ti;
	return mid;
}
int main(void) {
	cin >> M;

	h = tige(60 * 60);
	m = tige(60);
	//0:00到中午11:59为am
	if (h < 12) {
		printf("%02d:%02d:%02d am", h, m, M);
	} else {
		printf("%02d:%02d:%02d pm", h, m, M);
	}

	return 0;
}

题目没说清楚,应该是 0 < = T < 12 0 <= T< 12 0<=T<12时用am,

还有不要被题目误导,0补全应该是%02d,表示用前导0补全,总宽度为2

T583求存款利率

#include<bits/stdc++.h>

using namespace std;


int main(void) {

	cout << "1127.96 1127.96 1089.60 1090.10";


	return 0;
}

T601打印 Hello World

#include<bits/stdc++.h>

using namespace std;

string s = "Hello, World!";
int main(void) {

	for (int i = 0; i < s.size(); i += 1) {
		cout << s[i];
	}


	return 0;
}

T604求最大

#include<bits/stdc++.h>

using namespace std;

double a = 0, b = 0, c = 0;

inline double way1(void) {
	return max(a, max(b, c));
}
inline double way2(void) {
	if (a > b) {
		if (a > c) return a;
		return c;
	}//a <= b
	if (b > c) return b;
	return c;
}
inline double way3(void) {
	return (a > b) ? ((a > c) ? a : c) : ((b > c) ? b : c);
}
int main(void) {
	cin >> a >> b >> c;

	printf("%.f", way3());//三种都行


	return 0;
}

T613求质量

#include<bits/stdc++.h>

using namespace std;
const double gp = 19.32;//金
const double sp = 10.53;//银
const double cp = 8.90;//铜

double l = 0;

inline double f(double p) {
	return 1.0 * l * l * l * p;
}
int main(void) {
	cin >> l;

	l = abs(l);

	printf("%.2f\n%.2f\n%.2f\n", f(gp), f(sp), f(cp));

	return 0;
}

题目没有给密度,但你按照我的这个数据答案是对的

T615转换时间

/*

*/
#include<bits/stdc++.h>
#include<cstdio>

using namespace std;

int N = 0, mid = 0;
int d = 0, h = 0, m = 0;

inline int tige(int t) { //time change
	mid = N / t;
	N %= t;
	return mid;
}
int main(void) {
	cin >> N;

	d = tige(24 * 60 * 60);
	h = tige(60 * 60);
	m = tige(60);

	printf("%d %d %d %d\n", d, h, m, N);

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值