致初学者(三): 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加入划分后的集合 每个集合的结点 ...
随机推荐
- template.demo.js
<!DOCTYPE html><html><head> <title>index</title> <meta charset=&quo ...
- 使用IDEA打包scala程序并在spark中运行
一.首先配置ssh无秘钥登陆, 先使用这条命令:ssh-keygen,然后敲三下回车: 然后使用cd .ssh进入 .ssh这个隐藏文件夹: 再创建一个文件夹authorized_keys,使用命令t ...
- netty源码解解析(4.0)-18 ChannelHandler: codec--编解码框架
编解码框架和一些常用的实现位于io.netty.handler.codec包中. 编解码框架包含两部分:Byte流和特定类型数据之间的编解码,也叫序列化和反序列化.不类型数据之间的转换. 下图是编解码 ...
- Python模块之ncclient
一.简介 此模块是是netconf协议的客户端,可与netconf服务端进行交互 二.实验环境 1.操作系统:win10 2.python版本:python3.6.6 3.ncclient模块版本:0 ...
- Python 字符串的所有方法详解
name = "my name is {name} and my age is {age}" # 首字母大写 name.capitalize() # 统计某个字符的个数 name. ...
- linux 下 VSCODE 使用CMake编译STM32程序
项目在做什么 项目地址 本项目是为了研究MCU在linux下开发而做的 --build 存放cmake编译生成的文件 --cmake 存放cmake编译时会用到的文件,比如工具链检查.编译选项等 -- ...
- 2019Hexo博客Next主题深度美化 打造一个炫酷博客(2)-奥怪的小栈
219/8/1 更新 本文转载于:奥怪的小栈 这篇文章告诉你在搭建好博客后,面对网上千篇一律的美化教程怎么才能添加自己独特点,使人眼前一亮. 本站基于HEXO+Github搭建. 所以你需要准备好HE ...
- Spring-Boot:拦截器注解范例
package com.example.aop; import java.lang.annotation.Documented; import java.lang.annotation.Element ...
- C#窗体--鼠标事件
常见的鼠标事件: mouseclick,mousedown,mouseup,mousuenter,mouseleave.mousemove mouseDown按下鼠标事件: //鼠标按下后显示 pri ...
- Python源码学习Schedule
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...