三角形年份aabb3n+1近似计算阶乘之和数据统计水仙花数韩信点兵倒三角形子序列的和分数化小数排列蛇形填数sprintf竖式问题

news2024/12/24 10:09:34

目录

P16_习题1-6_三角形

P16_习题1-7_年份

P20_eg2-1_aabb

为什么是int n = a*1100 + b*11

  为什么要将向下取整?

P22_eg2-2_3n+1问题

P24_eg2-3_近似计算

P25_eg2-4_阶乘之和

P27_eg2-5_数据统计

P34_习题2-1_水仙花数

P34_习题2-2_韩信点兵

P34_习题2-3_倒三角形

P35_习题2-4_子序列的和

P35_习题2-5_分数化小数

P35_习题2-6_排列

P40_蛇形填数

sprintf

P43_竖式问题


P16_习题1-6_三角形

输入三角形3条边的长度值(均为正整数),判断是否能为直角三角形的3个边长。

#include<stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	if(a+b > c && a+c > b && b+c > a){
		if(a*a+b*b == c*c || a*a+c*c == b*b || b*b+c*c == a*a){
			printf("yes\n");
		} else {
			printf("no\n");
		}
	} else {
		printf("not a traingle\n");
	}
}

P16_习题1-7_年份

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 2000; i <= 2500; i++)
	{
		if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0)
		{
			printf("%d是闰年 ", i);
		}
	}
	return 0;
}

P20_eg2-1_aabb

输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)。

#include<stdio.h>
#include<math.h>
int main(){
	for(int a = 1;a <= 9;a++){
		for(int 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;
}

为什么是int n = a*1100 + b*11


  通过枚举,我们要构造出形如aabb的四位数,一个一位数a*1100就是aa00,一个一位数b*11就是bb


  为什么要将向下取整?


可不可以这样写?if(sqrt(n)==floor(sqrt(n)))printf("%d\n",n),
 即直接判断sqrt(n)是否为整数。理论上当然没问题,但这样写不保险,因为浮点数的运算(和函数)
 有可能存在误差。
 假设在经过大量计算后,由于误差的影响,整数1变成了0.9999999999,floor的结果会
 是0而不是1。为了减小误差的影响,一般改成四舍五入,即floor(x+0.5)。如果难以理
 解,可以想象成在数轴上把一个单位区间往左移动0.5个单位的距离。floor(x)等于1的区间
  为[1,2),而floor(x+0.5)等于1的区间为[0.5,1.5)。

P22_eg2-2_3n+1问题

对于任意大于1的自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。

#include<stdio.h>
int main(){
	int n2,count = 0;
	scanf("%d",&n2);
	long long n = n2;//防止乘法溢出
	while(n > 1){
		if(n % 2 == 1){
			n = n*3 + 1;
		} else {
			n /= 2;
			count++;
		}
	}
	printf("%d\n",count);
	return 0;
}

P24_eg2-3_近似计算

计算PI/4 = 1-1/3+1/5-1/7+……

#include<stdio.h>
int main(){
	double sum = 0;
	for(int i = 0;;i++){
		double term = 1.0 / (i*2+1);
		if(i % 2 == 0){
			sum += term;
		} else {
			sum -= term;
		}
		if(term < 1e-6){
			break;
		}
	}
	printf("%.6f\n",sum);
	return 0;
}

P25_eg2-4_阶乘之和

输入n,计算S=1!+2!+3!+……+n!的末6位

#include<stdio.h>
int main(){
	int n,S = 0;
	scanf("%d",&n);
	for(int i = 1;i <= n;i++){
		int factorial = 1;
		for(int j = 1;j <= i;j++){
			factorial *= j;
		}
		S += factorial;
	}
	printf("%d\n",S % 1000000);
	return 0;
}

P27_eg2-5_数据统计

输入一些整数,求出它们的最小值、最大值和平均值(保留3位小数)。输入保证这些数都是不超过1000的整数

(以下程序的前提是:程序的目录下要有data.in文件)

#define LOCAL
#include<stdio.h>
#define INF 1000000000
int main(){
#ifdef 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(x < min) min = x;
		if(x > max) max = x;
//		printf("x = %d,min = %d,max = %d\n",x,min,max);
		n++;
	}
	printf("%d %d %.3f\n",min,max,(double)s/n);
	return 0;
}

P34_习题2-1_水仙花数

100-999水仙花数,ABC = A^3+B^3+C^3

#include<stdio.h>
int main(){
	for(int n = 100;n <= 999;n++){
		int a = n/100;
		int b = n/10%10;
		int c = n%10;
		if(n == a*a*a + b*b*b + c*c*c){
			printf("%d\n",n);
		}
	}
	return 0;
}

P34_习题2-2_韩信点兵

相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、
七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,
每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a < 3,b < 5,c < 7)
输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。
样例输入:
2 1 6
2 1 3
样例输出:
41
No answer

#include<stdio.h>
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	for(int i = 10;i <= 100;i++){
		if(i%3 == a && i%5 == b && i%7 == c){
			printf("%d\n",i);
			return 0;
		}
	}
	printf("No answer\n");
	return 0;
}

P34_习题2-3_倒三角形

输入正整数n<20 || n == 20,输出一个n层的倒三角形。例如,n=5时输出如下:

#########
 #######
  #####
   ###
    #
#include<stdio.h>
int main(){
	int n;
	scanf("%d",&n);
	if(n >= 0 && n <= 20){
		for(int i = 0;i < n;i++){
			for(int m = 0;m < i;m++){
				printf(" ");
			}
			for(int j = 0;j < 2*n-1-2*i;j++){
				printf("#");
			}
			printf("\n");
		}
	} else {
		printf("ERROR\n");
	}
}

P35_习题2-4_子序列的和

输入两个整数n<m<10^6,输出1/n^2+1/(n+1)^2+……+1/m^2,保留5位小数。输入包含多组数据,结束标记为
n=m=0
样例输入:
2 4
65536 655360
0 0
样例输出:
0.42361
0.00001

#include<stdio.h>
int main(){
	int n,m;
	scanf("%d%d",&n,&m);
	double sum = 0;
	for(double i = n;i <= m;i++){
		sum += 1/(i*i);
	}
	printf("%.5f",sum);
	return 0;
}

本题的特点就是int类型变量和double类型变量的比较。要清楚:谁是int类型,谁是double类型

if(1.0 == 1) printf("yes");

输出:
yes

P35_习题2-5_分数化小数

输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。a,b<=10^6,c<=100
输入包含多组数据,结束标记为a=b=c=0
样例输入:
1 6 4
样例输出:
0.1667

(暂时就这样吧,用C嘎嘎的接口)

#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
void Fraction_To_Decimal( double x, int n);
int main(){
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	double a1 = a,b1 = b;
	double decimal = a1/b1;
	Fraction_To_Decimal(decimal,c);
	return 0;
}

void Fraction_To_Decimal( double x, int n){
	cout <<fixed << setprecision(n) <<x << endl;
}

P35_习题2-6_排列

用1,2,3……,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3
按照“abc def ghi”的格式输出所有解,每行一个解

#include<stdio.h>
int main(){
	int count = 0;
	for(int i = 100;i <=999;i++){
		for(int j = 100;j <=999;j++){
			for(int k = 100;k <=999;k++){
				double i1 = i,j1 = j,k1 = k;
				if(j1/i1 == 2 && k1/i1 == 3 && k1/j1 == 1.5){
					++count;
					printf("%d %d %d\n",i,j,k);
				}
			}
		}
	}
	printf("%d",count);
	return 0;
}

由于if内的除法会出现小数,所以要用三个double类型变量接收三个位上数字

double i1 = i,j1 = j,k1 = k;
if(j1/i1 == 2 && k1/i1 == 3 && k1/j1 == 1.5){}

P40_蛇形填数

在nxn方阵里填入1,2,……,nxn,要求填成蛇形。例如,n = 4时方阵为:
10 11 12 1
9  16 13 2
8  15 14 3
7  6  5  4

#include<stdio.h>
#include<string.h>
#define maxn 20
int a[maxn][maxn];
int main(){
	int n,x,y,t = 0;
	scanf("%d",&n);
	memset(a,0,sizeof(a));
	t = a[x = 0][y = n-1] = 1;
	while(t < n*n){
		while(x+1<n && !a[x+1][y]) a[++x][y] = ++t;
		while(y-1>=0 && !a[x][y-1]) a[x][--y] = ++t;
		while(x-1>=0 && !a[x-1][y]) a[--x][y] = ++t;
		while(x+1<n && !a[x][y+1]) a[x][++y] = ++t;
	}
	for(int i = 0;i < n;i++){
		for(int j = 0;j < n;j++){
			printf("%3d",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}


      1、是否越界:x+1 < n,因为y的值没有修改;
      2、继续走下去会不会到达一个已经填过的格子:下一个格子是(x+1,y),因此需要“a[x+1][y] == 0”
     

sprintf

#include<stdio.h>
#include<string.h>
int main(){
	char buf[20];
	sprintf(buf,"%d%d",100,99);
	int len = strlen(buf); //strlen(buf)返回unsigned long int
	for(int i = 0;i < len;i++){
		printf("%c ",buf[i]);
	}
	return 0;
}

 

P43_竖式问题

找出所有形如abc*de(三位数乘以两位数)的算式,使得在完整的竖式中,
所有数字都属于一个特定的数字集合。 输入数字集合(相邻数字之间没有空格),输出所有
竖式。 每个竖式前应有编号,之后应有一个空行。 最后输出解的总数。
样例输入:
2557
样例输出:
<1>
..775
x..33
_____
.2325
2325.
_____
25575

        

 

#include<stdio.h>
#include<string.h>
int main(){
	int count = 0;
	char s[20],buf[99];
	scanf("%s",s);
	for(int abc = 100;abc <= 999;abc++){
		for(int de = 10;de <= 99;de++){
			int x = abc*(de%10),y = abc*(de/10),z = abc*de;
			sprintf(buf,"%d%d%d%d%d",abc,de,x,y,z);
			int ok = 1;
			int len = strlen(buf);
			for(int i = 0;i < len;i++){
				if(strchr(s,buf[i]) == NULL){
					ok = 0;
				}
			}
			if(ok){
				printf("<%d>\n",++count);
				printf("%5d\nx%4d\n_____\n%5d\n%4d\n_____\n%5d\n\n",abc,de,x,y,z);
			}
		}
	}
	printf("Solution is %d",count);
	return 0;
}

strchr:

char *strchr(const char *string,int c) 是在字符string 中寻找第一个出现的字符c  并返回位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/133182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fragment全文详解(由浅入深_源码分析)

相信android开发者们一定或多或少的用过Fragment&#xff0c;但是对于其更深层次的原理我猜可能大部分应该都没有了解过&#xff0c;今天这里就由浅入深&#xff0c;整体对Fragment做一个全面解析。 基础介绍 Fragment是什么以及为什么要有Fragment呢&#xff1f; Fragment直…

长沙烟火气回来了,颐而康客流回暖为什么这么快?

随着一大批阳康的人们走出家门&#xff0c;长沙这座消费之城也逐步恢复了往日的活力。车多起来了、路堵起来了、线下店铺恢复营业了、长沙的烟火气息又回来了。 在颐而康万家丽西子店的大厅里&#xff0c;等候休息区已经坐满了顾客&#xff0c;他们有的在等待&#xff0c;有的…

Centos6从零开始安装mysql和tomcat后台环境,并成功部署Tomcat项目

最近因为搞定了一些环境的搭建因为项目过于老旧的缘故我从centosstream9一直改换7一直到6都没有成功一直到改成6.5的32位版本才算是成功搭建完成所以特地来写一篇文章记录一下。 首先我的liunx使用版本是 centos6.5 32位 java版本&#xff1a;jdkCentos6从零开始安装mysql和tom…

7-6 整除光棍

这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#xff0c;这个整数一定…

【Kuangbin数论】阿拉丁和飞毯

4577. 阿拉丁和飞毯 - AcWing题库 题意&#xff1a; 思路&#xff1a; 就是去求x和y 使得 1.x!y 2.x*ya 3.min(x,y)b 一开始想的是去根号n地枚举a的约数 &#xff0c;然后直接统计 但是这样肯定T&#xff0c;所以换成dfs枚举约数去了 但是也T了 首先a*a<b的话直接特…

前端 | 手把手教你装饰你的github profile(github 首页)

1.创建存储库 您可以创建一个与您的 github 帐户名同名的存储库 添加README文件 2.编辑README.md 现在&#xff0c;可以根据自己的喜好修改 repo 中的自述文件&#xff0c;但我在考虑包含哪些信息时查看了其他开发人员的资料。通常包括简短的介绍、使用的技术堆栈和联系方式…

Buildroot编译hisi平台根文件系统

Buildroot编译hisi平台根文件系统 文章目录1. 下载Buildroot源码2. Menuconfig配置3. 编译Buildroot3.1 手动下载软件包3.2 kernel header 报错3.3 arm-hisiv300-linux-gcc-ar&#xff1a;cannot find plugin liblto_plugin.so3.4 /media/data/hisi/buildroot-2022.02.8/output…

C++类的多种构造函数

目录默认构造函数普通构造函数拷贝构造函数转换构造函数移动构造函数举例两个场景下面以Complex 复数类来学习C类中的各种构造函数; #include <iostream> using namespace std;//复数类 class Complex{friend ostream & operator<<(ostream &out, Complex…

2022年终结——人生中最美好的一站

文章目录前言回顾2022工作上学习上投资上生活上展望2023工作学习投资生活总结有一种责任与压力&#xff0c;叫做上有老下有小&#xff0c;但有一种幸福也叫做上有老下有小&#xff0c;当你遭遇挫折与困难时&#xff0c;这些“老小”以及那个同龄的“她”是你坚实的后盾&#xf…

Redisson中的“琐事”

文章目录前言锁分类Redisson可重入锁&#xff08;Reentrant Lock&#xff09;公平锁&#xff08;Fair Lock&#xff09;联锁&#xff08;MultiLock&#xff09;红锁&#xff08;RedLock&#xff09;读写锁&#xff08;ReadWriteLock&#xff09;信号量&#xff08;Semaphore&am…

【C++】左值、右值、语义移动和完美转发

右值引入的目的是为了对象移动&#xff1a; 因为在很多情况下&#xff0c;对象拷贝会经常发生&#xff0c;但是很多对象在拷贝后就直接被销毁了。这对性能是一个很大损耗。在重新分配内存的时候&#xff0c;从旧的内存将元素拷贝到新的内存中是不必要的。更好的方法是移动元素。…

论文投稿指南——中文核心期刊推荐(天文、测绘学)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

使用Kalibr问题汇总:ModuleNotFoundError: No module named ‘wx‘

问题1&#xff1a; 报错&#xff1a;/kalibr_ws/src/Kalibr/Schweizer-Messer/sm_python/python/sm/PlotCollection.py", line 4, in import wx ModuleNotFoundError: No module named ‘wx’ 解决&#xff1a; sudo apt-get install python3-wxgtk4.0问题2&#xff1…

MySQL补齐函数LPAD和RPAD之SQLite解决方案

工作中经常需要对数据进行清洗&#xff0c;并对个别字段进行格式化处理&#xff0c;像 字符串左右补齐。MySQL数据库自带有LPAD()、RPAD()&#xff0c;而SQLite数据库没有的相应函数&#xff0c;需要自己转换。 目录 1、MySQL数据库 1.1、MySQL左右补全函数 1.2、实践验证 …

阶段性回顾(5)与一些题目实例(数组合并,有序判断,删除元素,进制问题等)

tips 1. 内存栈区的使用习惯是先使用高地址&#xff0c;再使用低地址。并且你还要清楚&#xff1a;随着数组下标的增大&#xff0c;其元素的地址也是在不断变高&#xff1b;对于一个占多个内存单元的变量进行取地址&#xff0c;取出来的是其所占内存空间最低地址的内存单元的地…

Python内存机制 -- = 赋值操作

Python内存机制 python的万物皆对象可不只是说说而已。 1. 预备知识&#xff1a; id()&#xff1a;可以将id()理解为C语言中的*&#xff0c;其返回当前对象在内存中的地址。 int p id(object) # id函数返回对象object在其生命周期内位于内存中的地址&#xff0c;id函数的参数…

Python数据分析案例18——化学分子数据模型(机器学习分类问题全流程)

1. 引言 1.1设计背景 对分子进行分类&#xff0c;对于筛选特定疾病的候选药物是至关重要的。传统的机器学习算法可以对分子进行分类&#xff0c;但是分子不能直接作为机器学习模型的输入&#xff0c;需要进行大量的实验从分子中得到一系列的分子特性。将分子特征使用数字化进…

47-Jenkins-终止构建并设置构建结果

终止构建并设置构建结果前言获取构建结果终止构建并设置构建状态权限问题解决前言 本篇来学习Jenkins终止构建的方法&#xff0c;使用场景&#xff1a;根据前一个构建状态&#xff0c;判断当前构建是否运行 获取构建结果 上次构建结果&#xff1a;currentBuild.getPreviousB…

【LeetCode题目详解】(五)144.二叉树的前序遍历、94.二叉树的中序遍历、145.二叉树的后序遍历、104.二叉树的最大深度、110.平衡二叉树

目录 一、力扣第144题&#xff1a;二叉树的前序遍历 1.解题思路 2.解题代码 二、力扣第94题&#xff1a;二叉树的中序遍历 三、力扣第145题&#xff1a;二叉树的后序遍历 四、力扣第104题&#xff1a;二叉树的最大深度 1.解题思路 2.解题代码 五、力扣第110题&#xff1…

抖音直播间弹幕rpc学习

目标url 随便找个直播间即可。 https://live.douyin.com/198986091107 接口分析 首先并没有在xhr下找到对应的接口 因为采用了websocket来传输信息。切换到ws即可看到 消息下&#xff0c;可以看到16进制的数据在源源不断地增加。 那么我们只要找到反序列化后的数据&…