前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法竞赛(二)

算法竞赛(二)

作者头像
Gorit
发布2021-12-09 15:53:04
3170
发布2021-12-09 15:53:04
举报

目录

一、aabb问题

二、7744问题

三、3n + 1 问题

四、近似计算

五、阶乘之和

六、数据统计

一、aabb问题

问题描述:输出所以形式为没有 aabb 的完全平方数(例如1122,3344),bb可以为00,aa则不行,又aabb知,这是个四位数,由穷举就可以把每个符合条件的列出来

没有输入:

样例输出:

1100

1111

1122

*****

源代码:

代码语言:javascript
复制
#include
int main()
{
	int a,b;
	for(a=1;a<=9;a++)
		for(b=0;b<=9;b++)
		{
			printf("%d\n",a*1100+b*11);
		}
	return 0; 
 } 

二、7744问题

问题描述:输入一个整数,判断其是否为完全平方数(用一个int 形变量m存储sqrt(n)四舍五入后的整数,然后判断m^2是否等于n,函数floor(x)返回不超过x的最大整数)

样例输出:

7744

源代码:

代码语言:javascript
复制
#include
#include
int main()
{
	int a,b;
	for(a=1;a<=9;a++)
		for(b=0;b<=9;b++)
		{
			int n = a*1100+b*11;
			int m = floor(sqrt(n) + 0.5);
			if(m*m == n)	
			printf("%d\n",n);
		}
	return 0; 
 } 

三、3n + 1 问题

问题描述:对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半,经过若干次这样的变换,一定会使n变为1,例如3—>10—>5—>16—>8—>4—>2—>1,可能输入的n非常的大,有时候要把n改为long long型 输入n,输出变换的次数

样例输入:

3

样例输出:

7

源代码:

代码语言:javascript
复制
#include
int main()
{
	int n,count = 0;
	scanf("%d",&n);
	while(n != 1)
	{
		if(n%2 == 1)
		n=3*n +1;
		else
		n=n/2;
		count++;
	}
	printf("%d",count);
	return 0; 
 } 

四、近似计算

问题描述:

,直到最后一项小于

 样例输出:

0.785399

源代码:

代码语言:javascript
复制
#include
int main()
{
	double sum =0;
	for(int i = 0;;i++)
	{
		double term = 1.0/(i*2+1);
		if(i%2 == 0)
		sum =sum + term;
		else sum = sum - term;
		if(term<1e-6)//e代表底数10 -6代表负六次方
		break;
	}
	printf("%.6f\n",sum);
	return 0; 
 } 

五、阶乘之和

问题描述:输入n,计算1!+2!+3!+4! * * * n!的末六位(不含前导0,只保留后六位数字)。n<=10^6,

样例输入:

10

样例输出:

 37913

源代码:

代码语言:javascript
复制
#include
int main()
{
	int n,S;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int f=1;//每次循环都要初始化变量
		for(int j=1;j<=i;j++)
		f*=j;
		S+=f;
	}
	printf("%d\n",S%1000000);
	return 0; 
 } 

六、数据统计

问题描述:输入一些整数,求出他们最大值,最小值,平均值(保留三位小数),输入保证这些数都是不超过1000的整数

样例输入

1 2 3

样例输出

1 3 2.000 

源代码:

代码语言:javascript
复制
#include
int main()
{
	int x,n=0,min,max,s=0;
	while(scanf("%d",&x)==1)
	{
		s+=x;
		if(xmax)max =x;
		n++;
	}	
	printf("%d %d %.3f",min,max,s*1.0/n);
	return 0;
}

PS:有时候,按下回车键,不一定意味着输入结束,在windows环境下,我们输入完成后,还要按下 ctrl + z,这个时候代表输入结束,Linux环境下,按下ctrl + D 可代表输入结束

数据统计(重定向版)

代码语言:javascript
复制
//重定向法
#define LOCAL
#include
#define INF 1000000000
int main()
{
#ifdef INF LOCAL
	freopen("data.in","r",stdin);
	freopen("data.out","w",stdout);
#endif
	int x,n = 0,min =INF,max = -INF,s = 0;
	while(scanf("%d",&x) == 1)
	{
		s += x;
		if(xmax) max = x;
		n++;
	 } 
	 printf("%d %d %.3f\n",min,max,(double)s/n);
	 return 0;
}

数据统计(fopen版)

代码语言:javascript
复制
#include
#define INF 1000000000
int main()
{
	FILE *fin, *fout;
	fin = fopen("data.in","rb");
	fout = fopen("data.out","wb");
	int x,n = 0,min = INF,max = -INF,s = 0;
	while(fscanf(fin,"%d",&x)==1)
	{
		s +=x;
		if(xmax) max = x;
		n++;
	}
	fprintf(fout,"%d %d %.3f\n",min,max, (double)s/n);
	fclose(fin);
	fclose(fout);
	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-01-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、aabb问题
  • 二、7744问题
  • 三、3n + 1 问题
  • 四、近似计算
  • 五、阶乘之和
  • 六、数据统计
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档