CONTEST1001 题解
PROBLEM A
分析
这个题属于非常基础的输出问题,一般来说见到这种题可以直接复制粘贴即可。
讲解
没有什么详细说明的直接复制粘贴即可。这样不容易出错。
代码
#include <stdio.h>
int main()
{
printf("**************************\n");
printf(" Very Good!\n");
printf("**************************\n");
return ;
}
点评
很基础的一道题,主要是熟悉OJ的使用和OJ的出题格式。
PROBLE B
分析
这个题相比第一题直接输出来说还多了输入。需要注意的是样例不代表程序只有10 20 30.而是其中之一是10 20 30.所有我们要调用scanf来进行输入。
怎么求三个数的最大值,其实有很多方法。在这里我就先介绍一种比较直观的数学方法了(当然应该不是最简单的,只是感觉比较好懂罢了)。
假设a,b,c 如果求出a,b的最大值,再求出a,c的最大值,那么不就是求出了a,b,c的最大值?
讲解
*下面的方法使用了?运算符请大家去翻一下课本如果有什么不清楚的话,不过也是基础的语法。这样可以减少代码量,当然再后续的学习中,会知道更多的函数来减少这种方法的代码量,但是这里不再详细介绍。
代码
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int k1=(a>b)?a:b;
int k2=(a>c)?a:c;
int k3=(k1>k2)?k1:k2;
printf("%d",k3);
}
点评
对于初学者而言可能不是一道轻松的题,但是掌握了这道题的话,说明你已经基本掌握了if的使用方法。
PROBLE C
分析
这个题说实话开始有点技术含量了,不是直接就能上手去做的。这里用到了循环语句,我在此用的是for,因为for对于计步循环来说还是比较好用的。这个题的难点在于怎么去求解2+22+222+…+22…222(n个2)的值的问题。
讲解
首先看到这种不断循环相加的情况,首先想到要用循环语句。对于上式的求解,其实经过观察我们可以发现一种方法。他们都是2*1,2*11,2*111的,那么怎么去实现这种功能呢,我们需要定义两个变量r,sum(当然其他的字母也可以,这里只是习惯上)。每次循环把r累积乘10再加1即可即r=r*10+1;用sum来进行计数。即sum+=2*r;到此程序的主要部分讲解完毕。
代码
注意下面sum初始值=2!!!i从1开始循环!!
#include <stdio.h>
int main()
{
int n,r,sum;
scanf("%d",&n);
r=;sum=;
for(int i=;i<n;i++)
{
r=r*+;
sum+=*r;
}
printf("%d",sum);
}
点评
这可能是大家第一次做这种与数学相关的题目。其实我感觉这个题是告诉大家,编程跟数学是密切相关的。
PROBLE D
分析
这个题虽然只有三个数,但是也透露出了一丝丝排序算法的影子。但是在这里我就先不准备讲解排序的一些算法(如冒泡排序)了,直接讲解硬来的解法。
讲解
首先我们得知道交换变量的方法,其中一个就是三变量交换法。我们先定义一个t t=a;a=b;b=t这样即可交换a和b,为什么要定义一个t来交换而不是直接交换呢,这些还需要你自己思考。那么有了这个交换变量的方法,我们就可以实施我们的方法了。我们进行直接硬来的三个if进行交换。例如if(a>b) { int t=a;a=b;b=t} 这样交换后就是a<=b了,同理还有(a>c) (b>c)两个,
出自紫书《算法竞赛入门经典》
详细请看代码
代码
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
if(a>b) {int t=a;a=b;b=t;}
if(a>c) {int t=a;a=c;c=t;}
if(b>c) {int t=b;b=c;c=t;}
printf("%d %d %d",a,b,c);
return ;
}
点评
这个题仅仅是三个数比大小如果是4个5个乃至更多的数呢?建议大家自己去学习一下排序的算法,推荐冒泡排序。
PROBLE E
分析
这还是一道数学题,题目本身不难解法很多。但是这里出现了循环输入输出的问题需要注意。
讲解
循环输入输出的基本做法是用一个while函数来实现。这里不得不提一下scanf函数的返回值为输入正确的元素的个数,到EOF结束指的是end of file,文件末尾。因为oj的判卷是文件输入文件输出进行数据的匹配来进行判卷的。oj会把你的程序的输出文本与答案比对如果全部一致那么恭喜你就是accepted,如果是其他会提示别的情况,再次不详细说明,看群里文件的入门指南即可。因为要输入三个值所以需要写成 while(scanf(“%d %d %d”,&a,&b,&c)==3)
其他的就是判断三角形的方法,判断直角三角形的方法,方法很多不再详细介绍。
详细请看代码
代码
#include <stdio.h>
int main()
{
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c)==)
{
if(a+b>c&&a+c>b&&b+c>a)
{
if(a*a+b*b==c*c)
printf("yes\n");
else
printf("no\n");
}
else
printf("not a triangle\n");
}
return ;
}
如果判断三角形条件有不熟悉的同学的话,可以看看代码里的if语句。
点评
这道题的要点我觉得在于循环输入和输出。题目本身而言并不难,只需要多多注意细节即可。
CONTEST1001 题解的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- [Xcode 实际操作]二、视图与手势-(10)UITapGestureRecognizer手势之单击
目录:[Swift]Xcode实际操作 本文将演示使用视图的手势功能,完成视图的交互操作. import UIKit class ViewController: UIViewController { ...
- Springboot整合elasticSearch的官方API实例
前言:在上一篇博客中,我介绍了从零开始安装ElasticSearch,es是可以理解为一个操作数据的中间件,可以把它作为数据的存储仓库来对待,它具备强大的吞吐能力和计算能力,其基于Lucene服务器开 ...
- performSegueWithIdentifier:sender里边的sender是啥意思
performSegueWithIdentifier:sender里边的sender是啥意思啊?怎样用啊? [self performSegueWithIdentifier:@"pushSi ...
- 在linux下pycharm无法输入中文
1.在centos系统下,在pycharm中,输入中文件时,显示的字母,无法显示中文字符. 首先,在centos下安装中文输入法,下面安装的是五笔输入法. a::yum安装ibus的五笔输入法: yu ...
- java数据结构----队列,优先级队列
1.队列:和栈中的情况不同,队列中的数据项不总是从数组下标0开始,移除一个数据项后,队头指针会指向下标较高的数据项,其特点:先入先出 2.图解 3.队列的实现代码: 3.1.Queue.java pa ...
- [筆記]catalan卡特蘭數
前言:希望自己每個星期能發一篇文章,提升一下寫文章的能力?雖然對語文作文毫無幫助但是總比玩遊戲強 所以不務正業的東西就不放在首頁了,有興趣的可以點分類去看 來源:https://www.cnblogs ...
- 最长上升子序列LIS(云笔记图片版)
- Spring+Quartz配置定时任务
一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...
- jQuery position() 源码解读
position的代码比较简单... position: function() { if ( !this[ 0 ] ) { return; } var offsetParent, offset, el ...
- 牛客网Java刷题知识点之什么是HTTP协议、什么是HTTP隧道、HTTP响应的结构是怎么样的、HTTP报头包含哪些、HTTP中GET与POST方法有什么区别
不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?tpId=31&tqId=21169&query=&asc= ...