致初学者(三): 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加入划分后的集合 每个集合的结点 ...
随机推荐
- git常用指令整理
git常用指令一览表 GIT指令 说明 git add . 将全部文件的内容加到Git索引以便执行commit. 这个指令不会检查文件夹中是否有文件被删除. 要注意的是,只有执行" git ...
- 基于hprose-golang创建RPC微服务
Hprose(High Performance Remote Object Service Engine) 是一款先进的轻量级.跨语言.跨平台.无侵入式.高性能动态远程对象调用引擎库.它不仅简单易用, ...
- java高并发系列 - 第24天:ThreadLocal、InheritableThreadLocal(通俗易懂)
java高并发系列第24篇文章. 环境:jdk1.8. 本文内容 需要解决的问题 介绍ThreadLocal 介绍InheritableThreadLocal 需要解决的问题 我们还是以解决问题的方式 ...
- java字符串详解
一.String 类的定义 public final class String implements java.io.Serializable, Comparable<String>, C ...
- Unity进阶之ET网络游戏开发框架 04-资源打包
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- 详解python函数的参数
详解python函数的参数 一.参数的定义 1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: ...
- springboot的mybatis的xml相关的配置
POM文件的配置: mybatis.type-aliases-package=com.handsight.platform.fras mybatis.mapper-locations=classpat ...
- python 26 反射
目录 1. 类的反射 1.1 实例对象 1.2 类 1.3 其他模块 -- 其他.py文件 1.4 本模块 -- 当前.py文件 2. 函数与方法的区别 2.1区别的方法: 2.2 总结 3. 特殊的 ...
- egret之粒子系统
1.添加粒子库,放在项目同级目录下(必须!!必须!!) 2.添加路径: 3.添加代码: private creatParticle(_pname: string, _target, _x: numbe ...
- CodeForces 1058E
题意略. 思路:本题有两个关键点: 一.满足题设的区间条件 1.区间内1的个数和为偶数 2.区间内含1个数最多的那一项,它所含1的个数不得超过区间内1的个数和的一半. 二.长度超过60的区间必然满足上 ...