下面继续给出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题解的更多相关文章

  1. 致初学者(一): HDU 2000~ 2013题解

    对于开始学习C语言程序设计或C++程序设计面向过程部分的同学来说,利用在线OJ网站进行实践训练,对提高自己的编程能力很有好处.国内外OJ网站很多,每个都去看看,去刷个题,是不现实的,也没必要.即使一个 ...

  2. 致初学者(四):HDU 2044~2050 递推专项习题解

    所谓递推,是指从已知的初始条件出发,依据某种递推关系,逐次推出所要求的各中间结果及最后结果.其中初始条件或是问题本身已经给定,或是通过对问题的分析与化简后确定.关于递推的知识可以参阅本博客中随笔“递推 ...

  3. 致初学者(二): HDU 2014~ 2032题解

    下面继续给出HDU 2014~2032的AC程序,供大家参考.2014~2032这19道题就被归结为“C语言程序设计练习(三) ”~“C语言程序设计练习(五) ”. HDU 2014:青年歌手大奖赛_ ...

  4. HDU 2033 人见人爱A+B

    http://acm.hdu.edu.cn/showproblem.php?pid=2033 Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的 ...

  5. HDU 5961 传递 题解

    题目 我们称一个有向图G是 传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c. 我们称图G是一个 竞赛图,当且仅当它是一个有向图且它的 ...

  6. HDU 5963 朋友 题解

    题目 B君在围观一群男生和一群女生玩游戏,具体来说游戏是这样的: 给出一棵n个节点的树,这棵树的每条边有一个权值,这个权值只可能是0或1. 在一局游戏开始时,会确定一个节点作为根.接下来从女生开始,双 ...

  7. 爆零后的感受外加一道强联通分量HDU 4635的题解

    今天又爆零了,又是又,怎么又是又,爆零爆多了,又也就经常挂嘴边了,看到这句话,你一定很想说一句””,弱菜被骂傻,也很正常啦. 如果你不开心,可以考虑往下看. 翻到E(HDU 4635 Strongly ...

  8. Contest1593 - 2018-2019赛季多校联合新生训练赛第三场(部分题解)

    H 10255 自然数无序拆分 H 传送门 题干: 题目描述 美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物.沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状, ...

  9. 【构造+DFS】2017多校训练三 HDU 6060 RXD and dividing

    acm.hdu.edu.cn/showproblem.php?pid=6060 [题意] 给定一棵以1为根的树,把这颗树除1以外的结点划分为k个集合(可以有空集),把1加入划分后的集合 每个集合的结点 ...

随机推荐

  1. 一文速览Vue全栈

    一文速览Vue全栈 原创: 新哥Lewis 天道酬勤Lewis 7月7日 Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用,专注于声明式渲染视图 ...

  2. Mermaid

    graph TD; A-->B; A-->C; B-->D; C-->D;

  3. 【0725 | Day 1】计算机编程/计算机组成原理/计算机操作系统

    什么是编程 编程语言:人与计算机交流的手段 编程:通过编程语言编写文件 学习编程的目的:让计算机代替人力,为我们服务 计算机组成原理 计算机由五大部分组成:控制器.运算器.存储器.输入设备.输出设备. ...

  4. iText实现pdf导出

    /** * AsianTest.java */ import java.io.FileOutputStream; import java.io.IOException; import com.lowa ...

  5. 如何在GitHub上上传自己本地的项目?(很适合新手使用哦!)

    这是我看了一些大佬们的博客后,尝试了几次,终于成功了上传项目,所以想做一下总结,以便以后查看,同时想分享给才接触GitHub的新手们,希望能够有所帮助~ 条条大路通罗马,上传的方法肯定不止一种,等我学 ...

  6. Django Mysql数据库-聚合查询与分组查询

    一.聚合查询与分组查询(很重要!!!) 聚合查询:aggregate(*args, **kwargs),只对一个组进行聚合 from django.db.models import Avg,Sum,C ...

  7. Kali Linux-装机后通用配置

    目录 前言 一. 网络优化 更换host 更换dns 添加源 二. 更新系统 三 .安装N卡驱动 四.修复 add-apt-repository 五.安装常用软件 安装apt自带的包 安装第三方的de ...

  8. 读书分享全网学习资源大合集,推荐Python学习手册等三本书「01」

    0.前言 在此之前,我已经为准备学习python的小白同学们准备了轻量级但超无敌的python开发利器之visio studio code使用入门系列.详见 1.PYTHON开发利器之VS Code之 ...

  9. CentOS 7下安装配置搭建jdk+tomcat+MariaDB环境

    1.JDK安装 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看当前Linux系统是否已经安装java 输入 rpm -qa | grep java 2)卸载两个 ...

  10. Leetcode之广度优先搜索(BFS)专题-详解429. N叉树的层序遍历(N-ary Tree Level Order Traversal)

    Leetcode之广度优先搜索(BFS)专题-429. N叉树的层序遍历(N-ary Tree Level Order Traversal) 给定一个 N 叉树,返回其节点值的层序遍历. (即从左到右 ...