致初学者(三): 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加入划分后的集合 每个集合的结点 ...
随机推荐
- java并发编程(二十二)----(JUC集合)ConcurrentHashMap介绍
这一节我们来看一下并发的Map,ConcurrentHashMap和ConcurrentSkipListMap.ConcurrentHashMap通常只被看做并发效率更高的Map,用来替换其他线程安全 ...
- Redis的分布式和主备配置调研
目前Redis实现集群的方法主要是采用一致性哈稀分片(Shard),将不同的key分配到不同的redis server上,达到横向扩展的目的. 对于一致性哈稀分片的算法,Jedis-2.0.0已经提供 ...
- SpringCloud微服务小白入门之Eureka注册中心和服务中心搭建示例
一.注册中心配置文件 代码复制区域: spring: application: name: spring-cloud-server server: port: 7000 eureka: instanc ...
- 为什么选择B+树作为数据库索引结构?
背景 首先,来谈谈B树.为什么要使用B树?我们需要明白以下两个事实: [事实1] 不同容量的存储器,访问速度差异悬殊.以磁盘和内存为例,访问磁盘的时间大概是ms级的,访问内存的时间大概是ns级的.有个 ...
- pt-online-schema-change使用详解
一.pt-online介绍 pt-online-schema-change是percona公司开发的一个工具,在percona-toolkit包里面可以找到这个功能,它可以在线修改表结构 原理: 首先 ...
- python 25 类的成员
目录 1. 类的私有成员 -- __ 1.1 类的私有静态属性 1.2 类的私有方法 1.3 对象的私有方法 2. 类的其他方法 2.1 类方法 @classmethod 2.2 静态方法 @stat ...
- 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
一.前言 Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建.测试和部署软件.Jenkins 支持各种运行方式,可通过系统包.Docker 或者通过一个独立的 Java ...
- 在.net core web网站中添加webSocket支持
注意:前置条件,操作系统 windows 8 以上,IIS Express 8.0 以上. 第1步:在Startup.cs文件的头部添加如下引用: using System.Net.WebSocket ...
- Jedis操作Redis--String类型
/** * String(字符串) * APPEND,BITCOUNT,BITOP,BITFIELD,DECR,DECRBY,GET,GETBIT,GETRANGE,GETSET,INCR,INCRB ...
- library not found for -ljpush-ios-3.2.1错误
很多人在更新pod后报 library not found for -ljpush-ios-3.2.1(举例)错误,这其实是包含版本号类型错误. 究其原因:使用了版本号做库名字,pod升级后 Podf ...