致初学者(三): HDU 2033~ 2043题解
下面继续给出HDU 2033~2043的AC程序,供大家参考。2033~2043这10道题就被归结为“ACM程序设计期末考试(2006/06/07) ”和“2005实验班短学期考试 ”。
HDU 2033:人见人爱A+B
简单分支结构。
#include <stdio.h>
int main()
{
int n,ah,am,as,bh,bm,bs;
scanf("%d",&n);
while (n--)
{
scanf("%d%d%d%d%d%d",&ah,&am,&as,&bh,&bm,&bs);
bs+=as;
if (bs>=)
{
bm+=bs/;
bs=bs%;
}
bm+=am;
if (bm>=)
{
bh+=bm/;
bm=bm%;
}
bh+=ah;
printf("%d %d %d\n",bh,bm,bs);
}
return ;
}
HDU 2034:人见人爱A-B
设用数组a,b,c分别表示集合A,B,C,其中 C=A-B。
用循环 for (i=0;i<n;i++) 处理集合A中的每个元素a[i],对于元素a[i] 用循环 for (j=0;j<m;j++) 在集合B中查找a[i]是否在集合B中存在,如果a[i]不在集合B中出现,则将a[i]保存到数组c中,作为集合C的一个元素。
得到数组c后,输出前采用冒泡排序按从小到大的顺序对数组c进行排序。
#include <stdio.h>
int main()
{
int n,m,i,j,cnt,t;
int a[],b[],c[];
while ()
{
scanf("%d%d",&n,&m);
if (n== && m==)
break;
for (i=;i<n;i++) // 输入集合A的元素
scanf("%d",&a[i]);
for (i=;i<m;i++) // 输入集合B的元素
scanf("%d",&b[i]);
cnt=; // 集合C=A-B的元素个数
for (i=;i<n;i++)
{
for (j=;j<m;j++) // 查找当前集合A的元素a[i]是否在集合B中存在
if (a[i]==b[j]) break;
if (j==m) // 如果a[i]不在集合B中出现
c[cnt++]=a[i];
}
if (cnt==)
printf("NULL\n");
else
{
for (i=;i<cnt-;i++) //用冒泡法排序
for (j=;j<cnt--i;j++)
if (c[j]>c[j+])
{
t=c[j];
c[j]=c[j+];
c[j+]=t;
}
for (i=;i<cnt;i++)
{
printf("%d ",c[i]);
}
printf("\n");
}
}
return ;
}
HDU 2035:人见人爱A^B
采用快速幂运算完成A^B的计算。
#include <stdio.h>
int mod_pow(int x,int n,int m) // 快速幂运算
{
int ret=;
while (n!=)
{
if (n&) ret=ret*x%m;
x=x*x%m;
n/=;
}
return ret;
}
int main()
{
int a,b;
while ()
{
scanf("%d%d",&a,&b);
if (a== && b==) break;
printf("%d\n",mod_pow(a,b,));
}
return ;
}
HDU 2036:改革春风吹满地
利用向量积(叉积)计算多边形的面积公式为:

对于此公式推导过程有兴趣的同学可以参阅网上的一篇博文“利用向量积(叉积)计算三角形的面积和多边形的面积”。
#include <stdio.h>
int main()
{
int i,n,x[],y[];
double sum;
while (scanf("%d",&n) && n!=)
{
for (i=;i<n;i++)
scanf("%d%d",&x[i],&y[i]);
sum=;
for(i=;i<n;i++)
sum+=x[i-]*y[i]-x[i]*y[i-];
sum+=x[n-]*y[]-x[]*y[n-];
printf("%.1lf\n",0.5*sum);
}
return ;
}
HDU 2037:今年暑假不AC
定义一个结构体
struct showtime
{
int begin;
int end;
};
用于保存电视节目的开始时间和结束时间。定义结构体数组show[101]保存输入的电视节目情况。
采用贪心法求解。将电视节目(即结构体数组show)按结束时间从小到大排列(若结束时间系统,则按开始时间从大到小)。
先设lastend=show[0].end,因为第1个元素的结束时间一定是最早的,然后从左到右遍历数组各元素,若当前元素的开始时间大于lastend,则可以看一个完整节目,计数,同时修改lastend使之等于当前元素的结束时间。直到数组全部元素遍历完。
#include <stdio.h>
#include <algorithm>
using namespace std;
struct showtime
{
int begin;
int end;
};
bool cmp(showtime a ,showtime b)
{
if(a.end != b.end)
return a.end < b.end;
else
return a.begin > b.begin;
}
int main()
{
showtime show[];
int n,i,cnt,lastend;
while (scanf("%d",&n) && n!=)
{
for (i = ;i<n;i++)
{
scanf("%d%d",&show[i].begin,&show[i].end);
}
sort(show,show+n,cmp);
cnt = ;
lastend = show[].end;
for (i = ;i < n ;i++)
{
if(lastend <= show[i].begin)
{
cnt++;
lastend = show[i].end;
}
}
printf("%d\n",cnt);
}
return ;
}
HDU 2039:三角形
简单分支结构。输入三角形三条边后,若满足任意两边的和大于第3条边,则可以构成一个三角形。
#include <stdio.h>
int main()
{
int m;
double a,b,c;
scanf("%d",&m);
while (m--)
{
scanf("%lf%lf%lf",&a,&b,&c);
if (a+b>c && a+c>b && b+c>a)
printf("YES\n");
else
printf("NO\n");
}
return ;
}
HDU 2040:亲和数
抽象一个函数 int calcSum(int n)用于计算整数n的所有真因子之和。
#include <stdio.h>
#include <math.h>
int calcSum(int n)
{
int sum=,i,t;
t=(int)sqrt(1.0*n);
for (i=;i<=t;i++)
if (n%i==)
sum+=i+n/i;
return sum;
}
int main()
{
int m,a,b;
scanf("%d",&m);
while (m--)
{
scanf("%d%d",&a,&b);
if (calcSum(a)==b && calcSum(b)==a)
printf("YES\n");
else
printf("NO\n");
}
return ;
}
HDU 2041:超级楼梯
设 f[i]表示上到第i级楼梯的方法数。显然上到第i级,可以在第i-1级楼梯跨1级到达;或者在第i-2级楼梯跨2级到达。
故有 f[i]=f[i-1]+f[i-2]。
#include <stdio.h>
int main()
{
int n,m,i;
int f[]={,,};
for (i=;i<=;i++)
f[i]=f[i-]+f[i-];
scanf("%d",&n);
while (n--)
{
scanf("%d",&m);
printf("%d\n",f[m]);
}
return ;
}
HDU 2042:不容易系列之二
简单迭代处理。迭代初值num=3,迭代式为: num=2*(num-1); 。
#include <stdio.h>
int main()
{
int n,a,i,num;
scanf("%d",&n);
while (n--)
{
scanf("%d",&a);
num=;
for (i=;i<=a;i++)
num=*(num-);
printf("%d\n",num);
}
return ;
}
HDU 2043:密码
简单字符串处理。
#include <stdio.h>
#include <string.h>
int main()
{
int m,i,f1,f2,f3,f4;
char str[];
scanf("%d",&m);
while (m--)
{
scanf("%s",str);
if (strlen(str)< || strlen(str)>)
printf("NO\n");
else
{
f1=f2=f3=f4=;
for (i=;str[i]!='\0';i++)
if (str[i]>='' && str[i]<='')
f3=;
else if (str[i]>='A' && str[i]<='Z')
f1=;
else if (str[i]>='a' && str[i]<='z')
f2=;
else
f4=;
if (f1+f2+f3+f4>=)
printf("YES\n");
else
printf("NO\n");
}
}
return ;
}
致初学者(三): HDU 2033~ 2043题解的更多相关文章
- 致初学者(一): HDU 2000~ 2013题解
对于开始学习C语言程序设计或C++程序设计面向过程部分的同学来说,利用在线OJ网站进行实践训练,对提高自己的编程能力很有好处.国内外OJ网站很多,每个都去看看,去刷个题,是不现实的,也没必要.即使一个 ...
- 致初学者(四):HDU 2044~2050 递推专项习题解
所谓递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果.其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定.关于递推的知识可以参阅本博客中随笔“递推 ...
- 致初学者(二): HDU 2014~ 2032题解
下面继续给出HDU 2014~2032的AC程序,供大家参考.2014~2032这19道题就被归结为“C语言程序设计练习(三) ”~“C语言程序设计练习(五) ”. HDU 2014:青年歌手大奖赛_ ...
- HDU 2033 人见人爱A+B
http://acm.hdu.edu.cn/showproblem.php?pid=2033 Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的 ...
- HDU 5961 传递 题解
题目 我们称一个有向图G是 传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个 竞赛图,当且仅当它是一个有向图且它的 ...
- HDU 5963 朋友 题解
题目 B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根.接下来从女生开始,双 ...
- 爆零后的感受外加一道强联通分量HDU 4635的题解
今天又爆零了,又是又,怎么又是又,爆零爆多了,又也就经常挂嘴边了,看到这句话,你一定很想说一句””,弱菜被骂傻,也很正常啦. 如果你不开心,可以考虑往下看. 翻到E(HDU 4635 Strongly ...
- Contest1593 - 2018-2019赛季多校联合新生训练赛第三场(部分题解)
H 10255 自然数无序拆分 H 传送门 题干: 题目描述 美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物.沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状, ...
- 【构造+DFS】2017多校训练三 HDU 6060 RXD and dividing
acm.hdu.edu.cn/showproblem.php?pid=6060 [题意] 给定一棵以1为根的树,把这颗树除1以外的结点划分为k个集合(可以有空集),把1加入划分后的集合 每个集合的结点 ...
随机推荐
- 2019牛客多校训练第三场B.Crazy Binary String(思维+前缀和)
题目传送门 大致题意: 输入整数n(1<=n<=100000),再输入由n个0或1组成的字符串,求该字符串中满足1和0个数相等的最长子串.子序列. sample input: 801001 ...
- if else 深度优化
一. if else表达式过于复杂 if ((condition1 && condition2 ) || ((condition2 || condition3) && ...
- ES6中比较实用的几个特性
1.Default Parameters(默认参数) in ES6 es6之前,定义默认参数的方法是在一个方法内部定义 var link = function (height, color, url) ...
- java算法(4)---静态内部类实现雪花算法
静态内部类单例模式实现雪花算法 在生成表主键ID时,我们可以考虑主键自增 或者 UUID,但它们都有很明显的缺点 主键自增:1.自增ID容易被爬虫遍历数据.2.分表分库会有ID冲突. UUID: 1. ...
- Netty源码分析--内存模型(下)(十二)
这一节我们一起看下分配过程 PooledByteBuf<T> allocate(PoolThreadCache cache, int reqCapacity, int maxCapacit ...
- JS数据结构第五篇 --- 二叉树和二叉查找树
一.二叉树的基本概念 从逻辑结构角度来看,前面说的链表.栈.队列都是线性结构:而今天要了解的“二叉树”属于树形结构. 1.1 多叉树的基本概念,以上图中“多叉树”为例说明 节点:多叉树中的每一个点都叫 ...
- 回顾js中的cookie/localstorage
1.首先简单总结下cookie cookie:可以做会话跟踪 特点: 1.大小限制(不能超过4k) 2.每个域下cookie不能超过50个 3.有效期(和设定时间有关), ...
- Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
目录 0.Visual Studio 2019 远程调试工具使用场景 1.Visual Studio 2019 远程调试工具下载地址: 2.Visual Studio 2019 远程调试工具-安装及运 ...
- Nacos(九):Nacos集群部署和遇到的问题
前言 前面的系列文章已经介绍了Nacos的如何接入SpringCloud,以及Nacos的基本使用方式 之前的文章中都是基于单机模式部署进行讲解的,本文对Nacos的集群部署方式进行说明 环境准备 J ...
- Redis学习总结(四)--Redis主从配置
在分布式系统架构设计中高可用是必须考虑的因素之一.高可用通常是指,通过设计减少系统不能提供服务的时间.而单点是系统高可用的最大的败笔,如果单点出现问题的话,那么整个服务就不能使用了,所以应该尽量在系统 ...