记录洛谷刷题QAQ,一些不大优雅的代码


一、【深基2.例7】数字反转

题目描述

输入一个不小于 100 100 100 且小于 1000 1000 1000,同时包括小数点后一位的一个浮点数,例如 123.4 123.4 123.4 ,要求把这个数字翻转过来,变成 4.321 4.321 4.321 并输出。

输入格式

一行一个浮点数

输出格式

一行一个浮点数

样例 #1

样例输入 #1

123.4

样例输出 #1

4.321

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	char num[100000];
	scanf("%s",&num);

	int len = strlen(num);
	for(int i = len-1;i >= 0;i--)
	{
		printf("%c",num[i]);
	}
	return 0;	
} 

二、【深基2.例8】再分肥宅水

题目描述

现在有 t t t 毫升肥宅快乐水,要均分给 n n n 名同学。每名同学需要 2 2 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 3 3 位),以及一共需要多少个杯子。

输入格式

输入一个实数 t t t 和一个正整数 n n n,使用空格隔开。

输出格式

输出两行。

第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。

样例 #1

样例输入 #1

500.0 3

样例输出 #1

166.667
6

提示

对于所有数据, 0 ≤ t ≤ 10000 0\leq t\leq 10000 0t10000 且小数点后不超过 3 3 3 位, 1 ≤ n ≤ 1000 1\leq n\leq 1000 1n1000

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	double t;
	int n;
	scanf("%lf%d",&t,&n);

	double num = t/n;
	printf("%.3lf\n%d",num,n*2);
	return 0;	
} 

三、【深基2.习2】三角形面积

题目描述

一个三角形的三边长分别是 a a a b b b c c c,那么它的面积为 p ( p − a ) ( p − b ) ( p − c ) \sqrt{p(p-a)(p-b)(p-c)} p(pa)(pb)(pc) ,其中 p = 1 2 ( a + b + c ) p=\frac{1}{2}(a+b+c) p=21(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 1 1 1 位小数。

输入格式

第一行输入三个实数 a , b , c a,b,c a,b,c,以空格隔开。

输出格式

输出一个实数,表示三角形面积。精确到小数点后 1 1 1 位。

样例 #1

样例输入 #1

3 4 5

样例输出 #1

6.0

提示

数据保证保证能构成三角形, 0 ≤ a , b , c ≤ 1000 0\leq a,b,c\leq 1000 0a,b,c1000,每个边长输入时不超过 2 2 2 位小数。

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	double a, b, c;
	scanf("%lf%lf%lf",&a,&b,&c);
	
	double p = 0.5*(a+b+c);
	double sum = sqrt(p*(p - a)*(p - b)*(p - c));
	printf("%.1lf",sum);
	return 0;	
} 

四、【深基2.习6】Apples Prologue / 苹果和虫子

题目描述

八尾勇喜欢吃苹果。她现在有 m m m 1 ≤ m ≤ 100 1 \le m \le 100 1m100)个苹果,吃完一个苹果需要花费 t t t 0 ≤ t ≤ 100 0 \le t \le 100 0t100)分钟,吃完一个后立刻开始吃下一个。现在时间过去了 s s s 1 ≤ s ≤ 10000 1 \le s \le 10000 1s10000)分钟,请问她还有几个完整的苹果?

输入格式

输入三个非负整数表示 m , t , s m, t, s m,t,s

输出格式

输出一个整数表示答案。

样例 #1

样例输入 #1

50 10 200

样例输出 #1

30

提示

如果你出现了 RE,不如检查一下被零除?

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int m;
	int t, s;
	scanf("%d%d%d",&m,&t,&s);
	
	if(t == 0)
	{
		printf("0\n");
	}
	else if(t != 0)
	{
		int num = s / t;
		int sum = 0;
		if(s % t != 0)
		{
			num++;
		}
		if(num >= m)
		{
			printf("0\n");
		}
		else {
			printf("%d",m - num);
		}
		
	}
	return 0;	
} 

五、【深基3.例2】数的性质

题目描述

一些整数可能拥有以下的性质:

  • 性质 1:是偶数;
  • 性质 2:大于 4 4 4 且不大于 12 12 12

小 A 喜欢这两个性质同时成立的整数;Uim 喜欢这至少符合其中一种性质的整数;八尾勇喜欢刚好有符合其中一个性质的整数;正妹喜欢不符合这两个性质的整数。现在给出一个整数 x x x,请问他们是否喜欢这个整数?

输入格式

输入一个整数 x ( 0 ≤ x ≤ 1000 ) x(0\le x \le 1000) x(0x1000)

输出格式

输出这 4 4 4 个人是否喜欢这个数字,如果喜欢则输出 1,否则输出 0,用空格分隔。输出顺序为:小 A、Uim、八尾勇、正妹。

样例 #1

样例输入 #1

12

样例输出 #1

1 1 0 0

代码如下

#include<string.h>
#include<stdio.h>
#include<math.h>
#include <stdlib.h>

int main()
{
	int n;
	scanf("%d",&n);
	
	
	int a = 0, b = 0;
	if(n % 2 == 0)
	{
		a = 1;
	}
	if(n > 4&& n <= 12)
	{
		b = 1;
	}
	
	if(a == 1&&b == 1)
	{
		printf("1 1 0 0");
	}
	if(a == 1&&b == 0)
	{
		printf("0 1 1 0");
	}
	
	if(a == 0&& b== 1)
	{
		printf("0 1 1 0");
	}
	
	if(a == 0 && b == 0)
	{
		printf("0 0 0 1");
	}
	return 0;	
} 
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐