ACM
文章平均质量分 53
酒色财气君莫沾
这个作者很懒,什么都没留下…
展开
-
20220219寒假学校周赛
title: 2022寒假周赛4date: 2020-02-19tags: ACMA.直角三角形知识点:二分思路:直角三角形肯定是三角形,所以只需要判断a2+b2=c2a^2+b^2=c^2a2+b2=c2。设三边变成分别为a,b,c(c>a,b)所以可知{a2+b2=k2(k>a,b)a2+k2=b2(b>a,k)\begin{cases}a^2+b^2=k^2 (k>a,b)\\[2ex]a^2+k^2=b^2 (b>a,k)\end{cases}⎩.原创 2022-02-20 15:29:19 · 667 阅读 · 0 评论 -
HDU-1172 猜数字
猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这两个数字同时存在于这两个数中,而且1在这两个数中的位置是相同的,所以计算机会告诉玩家猜对了2个数字,其中一个在正确的位置。如果玩家猜1111,那么计算机会告诉他猜对2个数字,有2个在正确的位置。现在给你一段gameboy与计算机的对话过程,你的任务原创 2021-01-22 22:56:06 · 379 阅读 · 1 评论 -
拼题A 2021 跨年挑战赛 7-5 整除阶乘 (15分)
本题要求你在给定区间[a,b]内找出使得n2+1整除n!的所有正整数n。输入格式:输入在一行中给出两个正整数0<a<b≤104,其中(b−a)≤20。输出格式:按照递增顺序,每行输出一个满足题面条件的n。如果解不存在,则输出None。输入样例 1:30 50输出样例 1:384347输入样例 2:50 55输出样例 2:None...原创 2021-01-04 13:46:32 · 433 阅读 · 0 评论 -
拼题A 2021 跨年挑战赛_7-4 相生相克 (15分)
古代先民认为,天下万物皆由五类元素组成,分别是金、木、水、火、土,彼此之间存在相生相克的关系。相生关系为:木生火,火生土,土生金,金生水,水生木。相克关系为:金克木,木克土,土克水,水克火,火克金。本题就请你编写程序,判断任意一对给定的元素之间的关系。输入格式:输入在一行中给出一个正整数 N(≤10),随后 N 行,每行给出 2 个正整数A和B,为两种元素的编号。这里假设金、木、水、火、土的编号顺次为 1、2、3、4、5。输出格式:对输入的每一对A和B,如果A生...原创 2021-01-04 13:08:01 · 883 阅读 · 0 评论 -
拼题A 2021 跨年挑战赛_7-2 射击成绩 (10分)
上图是 10m 气手枪靶纸。10 环的直径为 11.5mm,9 环的直径为 27.5mm,8 环的直径为 43.5mm。7~10 环区为黑色,直径为 59.5mm,外环直径为 155.5mm。1~6 环区直径差均为常数。当所有环线标记都被擦除,你还能否判断成绩?输入格式:输入在一行中给出一个选手射击的点到靶心的直线距离,以微米(10−3毫米)为单位。输出格式:根据输入的距离,输出该选手得到的环值。注意:脱靶计 0 分。输入样例 1:13100输出样例 1:...原创 2021-01-04 10:57:20 · 610 阅读 · 0 评论 -
习题9-5 通讯录排序
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。输入格式:输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。输出格式:按照年龄从大到小输出朋友的信息,格式同输出。#include<stdio.h&g原创 2020-12-19 17:03:45 · 231 阅读 · 1 评论 -
习题9-4 查找书籍
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。输出格式:在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。#include<stdio.h>struct book{ char name[31]; double price;}原创 2020-12-19 17:03:12 · 207 阅读 · 1 评论 -
习题9-3 平面向量加法
本题要求编写程序,计算两个二维平面向量的和向量。输入格式:输入在一行中按照“x1 y1 x2 y2”的格式给出两个二维平面向量v1=(x1,y1)和v2=(x2,y2)的分量。输出格式:在一行中按照(x, y)的格式输出和向量,坐标输出小数点后一位(注意不能输出−0.0)。#include<stdio.h>#include<math.h>int main(){ double x1,y1,x2,y2原创 2020-12-19 17:02:41 · 142 阅读 · 1 评论 -
习题9-1 时间换算
本题要求编写程序,以hh:mm:ss的格式输出某给定时间再过n秒后的时间值(超过23:59:59就从0点开始计时)。输入格式:输入在第一行中以hh:mm:ss的格式给出起始时间,第二行给出整秒数n(<60)。输出格式:输出在一行中给出hh:mm:ss格式的结果时间。#include<stdio.h>int main(){ int h,m,s,n; scanf("%d:%d:%d %d",&h,&m,&s,&n); s+=n;原创 2020-12-19 17:02:08 · 261 阅读 · 1 评论 -
习题8-10 输出学生成绩
本题要求编写程序,根据输入学生的成绩,统计并输出学生的平均成绩、最高成绩和最低成绩。建议使用动态内存分配来实现。输入格式:输入第一行首先给出一个正整数N,表示学生的个数。接下来一行给出N个学生的成绩,数字间以空格分隔。输出格式:按照以下格式输出:average = 平均成绩max = 最高成绩min = 最低成绩结果均保留两位小数。#include<stdio.h>#include<stdlib.h>int main(){ int n,i,*原创 2020-12-19 17:01:32 · 391 阅读 · 1 评论 -
习题7-8 字符串转换成十进制整数
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。输入格式:输入在一行中给出一个以#结束的非空字符串。输出格式:在一行中输出转换后的十进制数。题目保证输出在长整型范围内。#include<stdio.h>#include<ctype.h>#include<math.h>int main(){原创 2020-12-19 16:59:27 · 401 阅读 · 1 评论 -
习题7-7 字符串替换
本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:原字母 对应字母 A Z B Y C X D W … … X C Y B Z A 输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出替换完成后的字符串。#include<stdio.h>#include<ctype.h>int main(){ char a[原创 2020-12-19 16:58:51 · 285 阅读 · 1 评论 -
习题7-6 统计大写辅音字母
英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。输入格式:输入在一行中给出一个不超过80个字符、并以回车结束的字符串。输出格式:输出在一行中给出字符串中大写辅音字母的个数。#include<stdio.h>#include<ctype.h>int main(){ char a[81]; int cnt; fgets(a,80,stdin); cnt=0; for(int i=0;a[i]!='\0原创 2020-12-19 16:58:12 · 220 阅读 · 1 评论 -
习题7-5 找鞍点 (20分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。本题要求编写程序,求一个给定的n阶方阵的鞍点。输入格式:输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。输出格式:输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。...原创 2020-11-16 17:35:29 · 156 阅读 · 1 评论 -
习题7-4 求矩阵各行元素之和 (15分)
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。输入格式:输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。输出格式:每行输出对应矩阵行元素之和。#include<stdio.h>int main(){ int m,n,a[6][6],sum,i,j; while(scanf("%d %d",&m,&n)!=EOF){ for(i=0;i<m;i++){ sum=0; for(原创 2020-11-15 22:45:39 · 183 阅读 · 0 评论 -
习题7-3 判断上三角矩阵 (15分)
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。本题要求编写程序,判断一个给定的方阵是否上三角矩阵。输入格式:输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。输出格式:每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。思路:原本想在中途遇到下三角非0退出进行下一次,可是因为我是边读变操作的.原创 2020-11-15 22:39:26 · 298 阅读 · 0 评论 -
习题7-2 求一批整数中出现最多的个位数字
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。输入格式:输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。输出格式:在一行中按格式“M: n1 n2 ...”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。#include<stdio.h原创 2020-11-07 10:38:03 · 3221 阅读 · 3 评论 -
习题7-1 选择法排序
本题要求将给定的n个整数从大到小排序后输出。输入格式:输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。输出格式:在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。#include<stdio.h>int main(void){ int n,i,j,a[10],idx; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++){ scanf("%d",&a原创 2020-11-07 09:59:08 · 520 阅读 · 0 评论 -
练习7-11 字符串逆序
输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。输入格式:输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。输出格式:在一行中输出逆序后的字符串。#include<stdio.h>int main(void){ int i,j; char ch[81]; i=-1; do{ i++; scanf("%c",&ch[i]); }while(ch[i]!='\n'); for(j=i-1;j>-1;j原创 2020-11-07 09:58:17 · 1078 阅读 · 0 评论 -
练习7-9 计算天数
本题要求编写程序计算某年某月某日是该年中的第几天。输入格式:输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。输出格式:在一行输出日期是该年中的第几天。思路:因为我懒得去用for输入,或者说我不知道怎么输入,所以我使用了一个数组,将它保存每一个月的天数。#include<stdio.h>int main(void){ int y,m,d,.原创 2020-11-03 22:52:14 · 508 阅读 · 0 评论 -
练习7-8 方阵循环右移
本题要求编写程序,将给定n×n方阵中的每个元素循环向右移m个位置,即将第0、1、⋯、n−1列变换为第n−m、n−m+1、⋯、n−1、0、1、⋯、n−m−1列。输入格式:输入第一行给出两个正整数m和n(1≤n≤6)。接下来一共n行,每行n个整数,表示一个n阶的方阵。输出格式:按照输入格式输出移动后的方阵:即输出n行,每行n个整数,每个整数后输出一个空格。输入样例:2 31 2 34 5 67 8 9输出样例:2 3 1 5 6 4 8 9 7 思路:偏移量已原创 2020-11-03 22:50:28 · 481 阅读 · 1 评论 -
练习7-7 矩阵运算
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。输入格式:输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。输出格式:在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。矩阵的术语与二维数组下标的对应关系 术语 含义 下标规律 主对角线 从矩阵的左上角至右下角的连线 i==j 上三角 主对角线以上的部分 i原创 2020-11-03 22:45:16 · 198 阅读 · 0 评论 -
练习7-4 找出不是两个数组共有的元素
给定两个整型数组,本题要求找出不是两者共有的元素。输入格式:输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。输出格式:在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。输入样例:10 3 -5 2 8 0 3 5 -15 9 10011 6 4 8 2 6 -5 9 0 100 8 1输出样例:3 5 -15 6 4 1注原创 2020-11-03 22:39:33 · 12122 阅读 · 16 评论 -
练习7-3 将数组中的数逆序存放
本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。输入格式:输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。#include<stdio.h>int main(void){ int n,a[10]; while(scanf("%d",&n)!=EOF){ for(int i=0;i&原创 2020-11-03 22:34:53 · 2505 阅读 · 0 评论 -
练习7-2 求最大值及其下标
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。输入格式:输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。输出格式:在一行中输出最大值及最大值的最小下标,中间用一个空格分开。#include<stdio.h>int main(void){ int n,max,k,a; while(scanf("%d",&n)!=EOF){ scanf("%d",&max); k=0;原创 2020-11-03 22:34:23 · 193 阅读 · 0 评论 -
习题6-8 统计一行文本的单词个数
本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。输入格式:输入给出一行字符。输出格式:在一行中输出单词个数。...原创 2020-11-02 09:33:42 · 438 阅读 · 0 评论 -
习题6-7 简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。输入格式:输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。输出格式:在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。思路:scanf("%d",&b);这条语句会取到非数字为止,所以我们可以不做多余的判断运算符号前面的数值,所以我们只需要判断其他条件即可#inc.原创 2020-10-28 00:02:59 · 716 阅读 · 0 评论 -
习题4-11 兔子繁衍问题
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?输入格式:输入在一行中给出一个不超过10000的正整数N。输出格式:在一行中输出兔子总数达到N最少需要的月数。思路:找规律,在下方表格中,你会发现除了1月和2月以外,兔子的对数都是前两个月之和,而这也就是我们常见的斐波那契数列。既然如此,我们可以使用递归来找到第n月有多少只兔子,当然题目要我们求的是月数,而不是原创 2020-10-27 23:59:26 · 928 阅读 · 0 评论 -
习题4-10 猴子吃桃问题
一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?输入格式:输入在一行中给出正整数N(1<N≤10)。输出格式:在一行中输出第一天共摘了多少个桃子。思路:①可以使用for函数来倒推找出第一天摘了桃子的数量②可以使用递归来推算出第一天摘的桃子的数量#include<stdio.h>.原创 2020-10-27 23:49:49 · 405 阅读 · 0 评论 -
习题4-9 打印菱形图案
本题要求编写程序,打印一个高度为n的、由“*”组成的正菱形图案。输入格式:输入在一行中给出一个正的奇数n。输出格式:输出由n行星号“*”组成的菱形,如样例所示。每个星号后跟一个空格。思路:菱形是对角线对称图形,因为输出是一行一行输出的,所以可以将上下分为两部分,而对称性与数字的正负刚好相同,所以将最上方视为-n/2(c中整数相除为整数),最下方视为n/2。然后找出规律即可。输入样例:7输出样例:-3 * -2 * * * -1 * * *原创 2020-10-27 23:45:21 · 693 阅读 · 0 评论 -
习题4-8 高空坠球
皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少?输入格式:输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内。输出格式:在一行中顺序输出皮球第n次落地时在空中经过的距离、以及第n次反弹的高度,其间以一个空格分隔,保留一位小数。题目保证计算结果不超过双精度范围。#include<stdio.h>int main(void){ long n; d原创 2020-10-27 00:24:23 · 280 阅读 · 0 评论 -
习题4-7 最大公约数和最小公倍数
本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。#include<stdio.h>int main(void){ int m,n,r,product; scanf("%d %d",&m,&n); product=m*n; do{ r=m%n; m=n; n=r; }while(n!=0); pri原创 2020-10-27 00:22:23 · 500 阅读 · 0 评论 -
习题4-6 水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。输入格式:输入在一行中给出一个正整数N(3≤N≤7)。输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。#include<stdio.h>#include<math.h>void fun(int num,int n){ int digit,temp; double sum=0;原创 2020-10-27 00:19:41 · 452 阅读 · 0 评论 -
习题4-5 换硬币
将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?输入格式:输入在一行中给出待换的零钱数额x∈(8,100)。输出格式:要求按5分、2分和1分硬币的数量依次从大到小的顺序,输出各种换法。每行输出一种换法,格式为:“fen5:5分硬币数量, fen2:2分硬币数量, fen1:1分硬币数量, total:硬币总数量”。最后一行输出“count = 换法个数”。#include<stdio.h>int main(void){ int x,i,j原创 2020-10-27 00:05:20 · 149 阅读 · 0 评论 -
习题4-3 求分数序列前N项和
本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。#include<stdio.h>int main(void){ int n,i; double sum,a,b;//分子分母不能定义为整数 scanf("%d",&n)原创 2020-10-26 21:13:28 · 1378 阅读 · 0 评论 -
习题4-2 求幂级数展开的部分和
已知函数ex可以展开为幂级数1+x+x2/2!+x3/3!+⋯+xk/k!+⋯。现给定一个实数x,要求利用此幂级数部分和求ex的近似值,求和一直继续到最后一项的绝对值小于0.00001。输入格式:输入在一行中给出一个实数x∈[0,5]。输出格式:在一行中输出满足条件的幂级数部分和,保留小数点后四位。#include<stdio.h>#include<math.h>int main(void){ int i,count,j;原创 2020-10-26 21:12:53 · 201 阅读 · 0 评论 -
习题4-1 求奇数和
本题要求计算给定的一系列正整数中奇数的和。输入格式:输入在一行中给出一系列正整数,其间以空格分隔。当读到零或负整数时,表示输入结束,该数字不要处理。输出格式:在一行中输出正整数序列中奇数的和。#include<stdio.h>int main(void){ int a,sum; do{ scanf("%d",&a); if(a>0){ if(a%2!=0) sum+=a; } else{ break; } }while原创 2020-10-26 21:12:21 · 132 阅读 · 1 评论 -
练习4-7 求e的近似值
自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。输入格式:输入第一行中给出非负整数 n(≤1000)。输出格式:在一行中输出部分和的值,保留小数点后八位。#include<stdio.h>int main(void){ int i,n; double sum,j;//1000!超过了整数的最大范围 j=sum=1; scanf("%d",&n); for(i=1;i原创 2020-10-26 21:09:23 · 1288 阅读 · 2 评论 -
练习4-6 猜数字游戏
猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到,则提示“Game Over”,并结原创 2020-10-26 21:03:23 · 1310 阅读 · 0 评论 -
习题3-4 统计学生成绩
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:大于等于90分为A; 小于90且大于等于80为B; 小于80且大于等于70为C; 小于70且大于等于60为D; 小于60为E。输入格式:输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。输出格式:在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。#include<stdi原创 2020-10-26 21:01:46 · 488 阅读 · 0 评论