【入门1】顺序结构
B2002 Hello,World!
B2025 输出字符菱形
P1000 超级玛丽游戏
P1001 A+B Problem
B2005 字符三角形
P5703 【深基2.例5】苹果采购
P5704 【深基2.例6】字母转换
P5705 【深基2.例7】数字反转
P5706 【深基2.例8】再分肥宅水
P5708 【深基2.习2】三角形面积
P5707 【深基2.例12】上学迟到
B2029 大象喝水
P1425 小鱼的游泳时间
P1421 小玉买文具
P3954 (NOIP2017 普及组)成绩
编写一个能够输出 Hello,World! 的程序。
提示:
使用英文标点符号;
Hello,World! 逗号后面没有空格。
H 和 W 为大写字母。
无
无
无
Hello,World!
#include
using namespace std;//命名空间
int main() {//表示主函数
cout<<"Hello,World!"<<endl;//<
return 0;//表示结束程序
}
用 * 构造一个对角线长 55 个字符,倾斜放置的菱形。
没有输入要求。
如样例所示。用 * 构成的菱形。
无
*
***
*****
***
*
#include
using namespace std;
int main()
{
char ch='*';
cout<<" "<<ch<<endl;
cout<<" "<<ch<<ch<<ch<<endl;
cout<<ch<<ch<<ch<<ch<<ch<<endl;
cout<<" "<<ch<<ch<<ch<<endl;
cout<<" "<<ch<<endl;
return 0;
}
本题是洛谷的试机题目,可以帮助了解洛谷的使用。
建议完成本题目后继续尝试 P1001、P1008。
另外强烈推荐新用户必读贴
超级玛丽是一个非常经典的游戏。请你用字符画的形式输出超级玛丽中的一个场景。
********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
无
如描述
#include
using namespace std;
int main()
{
cout<<" ********"<<endl;
cout<<" ************"<<endl;
cout<<" ####....#."<<endl;
cout<<" #..###.....##...."<<endl;
cout<<" ###.......###### ### ###"<<endl;
cout<<" ........... #...# #...#"<<endl;
cout<<" ##*####### #.#.# #.#.#"<<endl;
cout<<" ####*******###### #.#.# #.#.#"<<endl;
cout<<" ...#***.****.*###.... #...# #...#"<<endl;
cout<<" ....**********##..... ### ###"<<endl;
cout<<" ....**** *****...."<<endl;
cout<<" #### ####"<<endl;
cout<<" ###### ######"<<endl;
cout<<"##############################################################"<<endl;
cout<<"#...#......#.##...#......#.##...#......#.##------------------#"<<endl;
cout<<"###########################################------------------#"<<endl;
cout<<"#..#....#....##..#....#....##..#....#....#####################"<<endl;
cout<<"########################################## #----------#"<<endl;
cout<<"#.....#......##.....#......##.....#......# #----------#"<<endl;
cout<<"########################################## #----------#"<<endl;
cout<<"#.#..#....#..##.#..#....#..##.#..#....#..# #----------#"<<endl;
cout<<"########################################## ############"<<endl;
return 0;
}
强烈推荐新用户必读帖。
不熟悉算法竞赛的选手请看这里:
算法竞赛中要求的输出格式中,不能有多余的内容,这也包括了“请输入整数 a \bm a a 和 b \bm b b” 这一类的提示用户输入信息的内容。若包含了这些内容,将会被认为是 Wrong Answer
,即洛谷上的 WA
。在对比代码输出和标准输出时,系统将忽略每一行结尾的空格,以及最后一行之后多余的换行符。
若因此类问题出现本机(看起来)AC
,提交 WA
的现象,请勿认为是洛谷评测机出了问题,而是你的代码中可能存在多余的输出信息。用户可以参考在题目末尾提供的代码。
另外请善用应用中的在线 IDE 功能,以避免不同平台的评测中所产生的一些问题。
还有一点很重要的是,请不要在对应的题目讨论区中发布自己的题解,请发布到题解区域中,否则将处以删除或禁言的处罚。若发现无法提交题解则表明本题题解数量过多,仍不应发布讨论。
输入两个整数 a , b a, b a,b,输出它们的和( ∣ a ∣ , ∣ b ∣ ≤ 10 9 |a|,|b| \le {10}^9 ∣a∣,∣b∣≤109)。
注意
integer
会爆掉哦!int
类型,而且 C 最后要 return 0
。这不仅对洛谷其他题目有效,而且也是 NOIP/CSP/NOI 比赛的要求!任何一个伟大的思想,都有一个微不足道的开始。
两个以空格分开的整数。
一个整数。
20 30
50
本题各种语言的程序范例:
C
#include
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n", a+b);
return 0;
}
C++
#include
#include
using namespace std;
int main()
{
int a,b;
cin >> a >> b;
cout << a+b << endl;
return 0;
}
Pascal
var a, b: longint;
begin
readln(a,b);
writeln(a+b);
end.
Python2
s = raw_input().split()
print int(s[0]) + int(s[1])
Python3
s = input().split()
print(int(s[0]) + int(s[1]))
Java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String args[]) throws Exception {
Scanner cin=new Scanner(System.in);
int a = cin.nextInt(), b = cin.nextInt();
System.out.println(a+b);
}
}
JavaScript (Node.js)
const fs = require('fs')
const data = fs.readFileSync('/dev/stdin')
const result = data.toString('ascii').trim().split(' ').map(x => parseInt(x)).reduce((a, b) => a + b, 0)
console.log(result)
process.exit() // 请注意必须在出口点处加入此行
Ruby
a, b = gets.split.map(&:to_i)
print a+b
PHP
$input = trim(file_get_contents("php://stdin"));
list($a, $b) = explode(' ', $input);
echo $a + $b;
Rust
use std::io;
fn main(){
let mut input=String::new();
io::stdin().read_line(&mut input).unwrap();
let mut s=input.trim().split(' ');
let a:i32=s.next().unwrap()
.parse().unwrap();
let b:i32=s.next().unwrap()
.parse().unwrap();
println!("{}",a+b);
}
Go
package main
import "fmt"
func main() {
var a, b int
fmt.Scanf("%d%d", &a, &b)
fmt.Println(a+b)
}
C# Mono
using System;
public class APlusB{
private static void Main(){
string[] input = Console.ReadLine().Split(' ');
Console.WriteLine(int.Parse(input[0]) + int.Parse(input[1]));
}
}
Visual Basic Mono
Imports System
Module APlusB
Sub Main()
Dim ins As String() = Console.ReadLine().Split(New Char(){" "c})
Console.WriteLine(Int(ins(0))+Int(ins(1)))
End Sub
End Module
Kotlin
fun main(args: Array<String>) {
val (a, b) = readLine()!!.split(' ').map(String::toInt)
println(a + b)
}
Haskell
main = do
[a, b] <- (map read . words) `fmap` getLine
print (a+b)
Scala
object Main extends App {
println(scala.io.StdIn.readLine().split(" ").map(_.toInt).sum)
}
Perl
my $in = ;
chomp $in;
$in = [split /[\s,]+/, $in];
my $c = $in->[0] + $in->[1];
print "$c\n";
给定一个字符,用它构造一个底边长 5 5 5 个字符,高 3 3 3 个字符的等腰字符三角形。
输入只有一行,包含一个字符。
该字符构成的等腰三角形,底边长 5 5 5 个字符,高 3 3 3 个字符。
*
*
***
*****
对于 100 % 100 \% 100% 的数据,输入的字符是 ASCII 中的可见字符。
#include
using namespace std;
int main()
{
char ch;
cin>>ch;
cout<<" "<<ch<<endl;
cout<<" "<<ch<<ch<<ch<<endl;
cout<<""<<ch<<ch<<ch<<ch<<ch<<endl;
return 0;
}
现在需要采购一些苹果,每名同学都可以分到固定数量的苹果,并且已经知道了同学的数量,请问需要采购多少个苹果?
输入两个不超过 1 0 9 10^9 109 正整数,分别表示每人分到的数量和同学的人数。
一个整数,表示答案。保证输入和答案都在 int 范围内的非负整数。
5 3
15
#include
using namespace std;
long long a,b;
int main()
{
long long a,b;
cin>>a>>b;
cout<<a*b;
return 0;
}
输入一个小写字母,输出其对应的大写字母。例如输入 q[回车] 时,会输出 Q。
q
Q
#include
using namespace std;
int main()
{
char a;
cin>>a;
cout<<char(a-32)<<endl;
return 0;
}
输入一个不小于 100 100 100 且小于 1000 1000 1000,同时包括小数点后一位的一个浮点数,例如 123.4 123.4 123.4 ,要求把这个数字翻转过来,变成 4.321 4.321 4.321 并输出。
一行一个浮点数
一行一个浮点数
123.4
4.321
#include
using namespace std;
int main() {
char a,b,c,dot,d;
cin >> a >> b >> c >> dot >>d;
cout << d << dot << c << b <<a;
return 0;
}
现在有 t t t 毫升肥宅快乐水,要均分给 n n n 名同学。每名同学需要 2 2 2 个杯子。现在想知道每名同学可以获得多少毫升饮料(严格精确到小数点后 3 3 3 位),以及一共需要多少个杯子。
输入一个实数 t t t 和一个正整数 n n n,使用空格隔开。
输出两行。
第一行输出一个三位小数,表示可以获得多少毫升饮料。第二行输出一个正整数,表示一共需要多少个杯子。
500.0 3
166.667
6
对于所有数据, 0 ≤ t ≤ 10000 0\leq t\leq 10000 0≤t≤10000 且小数点后不超过 3 3 3 位, 1 ≤ n ≤ 1000 1\leq n\leq 1000 1≤n≤1000。
#include
using namespace std;
int main()
{
double t;
int n;
cin>>t>>n;
printf("%.3lf\n",t/n);
cout<<n*2;
return 0;
}
一个三角形的三边长分别是 a a a、 b b b、 c c c,那么它的面积为 p ( p − a ) ( p − b ) ( p − c ) \sqrt{p(p-a)(p-b)(p-c)} p(p−a)(p−b)(p−c),其中 p = 1 2 ( a + b + c ) p=\frac{1}{2}(a+b+c) p=21(a+b+c)。输入这三个数字,计算三角形的面积,四舍五入精确到 1 1 1 位小数。
第一行输入三个实数 a , b , c a,b,c a,b,c,以空格隔开。
输出一个实数,表示三角形面积。精确到小数点后 1 1 1 位。
3 4 5
6.0
数据保证能构成三角形, 0 ≤ a , b , c ≤ 1000 0\leq a,b,c\leq 1000 0≤a,b,c≤1000,每个边长输入时不超过 2 2 2 位小数。
#include
using namespace std;
int main()
{
double a,b,c,s,p;
cin>>a>>b>>c;
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%.1lf",s);
return 0;
}
学校和 yyy 的家之间的距离为 s s s 米,而 yyy 以 v v v 米每分钟的速度匀速走向学校。
在上学的路上,yyy 还要额外花费 10 10 10 分钟的时间进行垃圾分类。
学校要求必须在上午 8:00 \textrm{8:00} 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。
由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。
一行两个正整数 s , v s,v s,v,分别代表路程和速度。
输出一个 24 24 24 小时制下的时间,代表 yyy 最晚的出发时间。
输出格式为 HH:MM \texttt{HH:MM} HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0 0 0。
100 99
07:48
对于 100 % 100\% 100% 的数据, 1 ≤ s , v ≤ 1 0 4 1 \le s,v \le 10^4 1≤s,v≤104。
#include
using namespace std;
int main() {
int a,b,s,v,t;
cin>>s>>v;
int n;
n=8*60+24*60;
if(s%v!=0) //向上取整咯
t=s/v+1+10; //十分钟处理垃圾
else
t=s/v+10; //判断完毕
n=n-t; //
if(n>=24*60)
n=n-24*60;
a=n/60; //a为小时
b=n%60; //b为分钟
if(a<10)
cout<<'0'<<a<<':';//a和b小于10要补0
else
cout<<a<<':';
if(b<10)
cout<<'0'<<b;
else
cout<<b;
return 0;
}
一只大象口渴了,要喝 20 20 20 升水才能解渴,但现在只有一个深 h h h 厘米,底面半径为 r r r 厘米的小圆桶 ( h h h 和 r r r 都是整数)。问大象至少要喝多少桶水才会解渴。
输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深 h h h 和底面半径 r r r,单位都是厘米。
输出一行,包含一个整数,表示大象至少要喝水的桶数。
23 11
3
对于全部的测试点,保证 1 ≤ h ≤ 500 1 \leq h \leq 500 1≤h≤500, 1 ≤ r ≤ 100 1 \leq r \leq 100 1≤r≤100。
#include
using namespace std;
int main()
{
const double x=3.1415926;
int r,h,tiji,sum=0;
cin>>h>>r;
tiji=x*r*r*h;
sum=int(20000/tiji+1);
cout<<sum;
return 0;
}
伦敦奥运会要到了,小鱼在拼命练习游泳准备参加游泳比赛,可怜的小鱼并不知道鱼类是不能参加人类的奥运会的。
这一天,小鱼给自己的游泳时间做了精确的计时(本题中的计时都按 24 24 24 小时制计算),它发现自己从 a a a 时 b b b 分一直游泳到当天的 c c c 时 d d d 分,请你帮小鱼计算一下,它这天一共游了多少时间呢?
小鱼游的好辛苦呀,你可不要算错了哦。
一行内输入四个整数,以空格隔开,分别表示题目中的 a , b , c , d a, b, c, d a,b,c,d。
一行内输出两个整数 e e e 和 f f f,用空格间隔,依次表示小鱼这天一共游了多少小时多少分钟。其中表示分钟的整数 f f f 应该小于 60 60 60。
12 50 19 10
6 20
对于全部测试数据, 0 ≤ a , c ≤ 24 0\le a,c \le 24 0≤a,c≤24, 0 ≤ b , d ≤ 60 0\le b,d \le 60 0≤b,d≤60,且结束时间一定晚于开始时间。
#include
using namespace std;
int main() {
int a,b,c,d;
int e,f;
int shijian;
cin>>a>>b>>c>>d;
shijian = (c*60+d)-(a*60+b);
e = shijian/60;
f = shijian%60;
cout<<e<<' '<<f;
return 0;
}
班主任给小玉一个任务,到文具店里买尽量多的签字笔。已知一只签字笔的价格是 1 1 1 元 9 9 9 角,而班主任给小玉的钱是 a a a 元 b b b 角,小玉想知道,她最多能买多少只签字笔呢。
输入只有一行两个整数,分别表示 a a a 和 b b b。
输出一行一个整数,表示小玉最多能买多少只签字笔。
10 3
5
对于全部的测试点,保证 0 ≤ a ≤ 1 0 4 0 \leq a \leq 10^4 0≤a≤104, 0 ≤ b ≤ 9 0 \leq b \leq 9 0≤b≤9。
#include
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<int((a+b*0.1)/1.9);
return 0;
}
NOIP2017 普及组 T1
牛牛最近学习了 C++ 入门课程,这门课程的总成绩计算方法是:
总成绩=作业成绩$ \times 20%+ 小测成绩 小测成绩 小测成绩×30%+ 期末考试成绩 期末考试成绩 期末考试成绩 \times 50%$
牛牛想知道,这门课程自己最终能得到多少分。
三个非负整数 A , B , C A,B,C A,B,C,分别表示牛牛的作业成绩、小测成绩和期末考试成绩。相邻两个数之间用一个空格隔开,三项成绩满分都是 100 100 100 分。
一个整数,即牛牛这门课程的总成绩,满分也是 100 100 100 分。
100 100 80
90
60 90 80
79
牛牛的作业成绩是 100 100 100 分,小测成绩是 100 100 100 分,期末考试成绩是 80 80 80 分,总成绩是 100 × 20 % + 100 × 30 % + 80 × 50 % = 20 + 30 + 40 = 90 100 \times 20\%+100 \times 30\%+80 \times 50\%=20+30+40=90 100×20%+100×30%+80×50%=20+30+40=90。
牛牛的作业成绩是 60 60 60 分,小测成绩是 90 90 90 分,期末考试成绩是 80 80 80 分,总成绩是 60 × 20 % + 90 × 30 % + 80 × 50 % = 12 + 27 + 40 = 79 60 \times 20\%+90 \times 30\%+80 \times 50\%=12+27+40=79 60×20%+90×30%+80×50%=12+27+40=79。
对于 30 % 30\% 30% 的数据, A = B = 0 A=B=0 A=B=0。
对于另外 30 % 30\% 30% 的数据, A = B = 100 A=B=100 A=B=100。
对于 100 % 100\% 100% 的数据, 0 ≤ A , B , C ≤ 100 0≤A,B,C≤100 0≤A,B,C≤100 且 A , B , C A,B,C A,B,C 都是 10 10 10 的整数倍。
#include
using namespace std;
int main()
{
int A,B,C,sxm;
cin>>A>>B>>C;
sxm=A*0.2+B*0.3+C*0.5;
cout<<sxm<<endl;
return 0;
}