FAQ
Hướng dẫn giải bài toán A + B - C
Bài toán yêu cầu:
- Nhập 3 số nguyên a, b, c
- Tính và in ra kết quả của phép tính a + b - c
Input:
- Dòng một: Một số nguyên a
- Dòng hai: Hai số nguyên b và c, cách nhau bởi một dấu cách.
- -10 ≤ a, b, c ≤ 10
Output:
- Một số nguyên duy nhất là kết quả của phép tính a + b - c
C
#include <stdio.h>
int main() {
int a, b, c;
// Nhập dữ liệu
scanf("%d", &a);
scanf("%d %d", &b, &c);
// Tính toán và in kết quả
printf("%d\n", a + b - c);
return 0;
}
C11
#include <stdio.h>
int main(void) {
int a, b, c;
// Nhập dữ liệu
scanf("%d", &a);
scanf("%d %d", &b, &c);
// Tính toán và in kết quả
printf("%d\n", a + b - c);
return 0;
}
Clang
#include <stdio.h>
int main(void) {
int a, b, c;
// Nhập dữ liệu
scanf("%d", &a);
scanf("%d %d", &b, &c);
// Tính toán và in kết quả
printf("%d\n", a + b - c);
return 0;
}
Clang++
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++03
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++11
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++14
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++17
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++20
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c << endl;
return 0;
}
C++ (Themis)
#include <iostream>
using namespace std;
int main() {
int a, b, c;
// Nhập dữ liệu
cin >> a;
cin >> b >> c;
// Tính toán và in kết quả
cout << a + b - c;
return 0;
}
Python 3
# Nhập dữ liệu
a = int(input())
b, c = map(int, input().split())
# Tính toán và in kết quả
print(a + b - c)
Python 2
# Nhập dữ liệu
a = int(raw_input())
b, c = map(int, raw_input().split())
# Tính toán và in kết quả
print a + b - c
PyPy 2
# Nhập dữ liệu
a = int(raw_input())
b, c = map(int, raw_input().split())
# Tính toán và in kết quả
print a + b - c
PyPy 3
# Nhập dữ liệu
a = int(input())
b, c = map(int, input().split())
# Tính toán và in kết quả
print(a + b - c)
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Nhập dữ liệu
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
// Tính toán và in kết quả
System.out.println(a + b - c);
scanner.close();
}
}
Java 8
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Nhập dữ liệu
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
// Tính toán và in kết quả
System.out.println(a + b - c);
scanner.close();
}
}
JavaScript (Node.js)
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let lines = [];
rl.on('line', (line) => {
lines.push(line);
if (lines.length === 2) {
const a = parseInt(lines[0]);
const [b, c] = lines[1].split(' ').map(Number);
console.log(a + b - c);
rl.close();
}
});
V8 JavaScript
// Giả định rằng đầu vào được cung cấp qua readline
var a = parseInt(readline());
var bc = readline().split(' ').map(Number);
var b = bc[0];
var c = bc[1];
// Tính toán và in kết quả
print(a + b - c);
Go
package main
import "fmt"
func main() {
var a, b, c int
// Nhập dữ liệu
fmt.Scan(&a)
fmt.Scan(&b, &c)
// Tính toán và in kết quả
fmt.Println(a + b - c)
}
Ruby
# Nhập dữ liệu
a = gets.to_i
b, c = gets.split.map(&:to_i)
# Tính toán và in kết quả
puts a + b - c
Rust
use std::io;
fn main() {
let mut input = String::new();
// Nhập số a
io::stdin().read_line(&mut input).unwrap();
let a: i32 = input.trim().parse().unwrap();
// Nhập số b và c
input.clear();
io::stdin().read_line(&mut input).unwrap();
let parts: Vec<i32> = input
.trim()
.split_whitespace()
.map(|s| s.parse().unwrap())
.collect();
let b = parts[0];
let c = parts[1];
// Tính toán và in kết quả
println!("{}", a + b - c);
}
C
using System;
class Program {
static void Main() {
// Nhập dữ liệu
int a = int.Parse(Console.ReadLine());
string[] tokens = Console.ReadLine().Split();
int b = int.Parse(tokens[0]);
int c = int.Parse(tokens[1]);
// Tính toán và in kết quả
Console.WriteLine(a + b - c);
}
}
PHP
<?php
// Nhập dữ liệu
$a = (int)trim(fgets(STDIN));
list($b, $c) = array_map('intval', explode(' ', trim(fgets(STDIN))));
// Tính toán và in kết quả
echo ($a + $b - $c) . "\n";
?>
Pascal
program APlusMinusC;
var
a, b, c: integer;
begin
// Nhập dữ liệu
readln(a);
readln(b, c);
// Tính toán và in kết quả
writeln(a + b - c);
end.
Kotlin
fun main() {
// Nhập dữ liệu
val a = readLine()!!.toInt()
val (b, c) = readLine()!!.split(" ").map { it.toInt() }
// Tính toán và in kết quả
println(a + b - c)
}
Swift
import Foundation
// Nhập dữ liệu
let a = Int(readLine()!)!
let bc = readLine()!.split(separator: " ").map { Int($0)! }
let b = bc[0]
let c = bc[1]
// Tính toán và in kết quả
print(a + b - c)
Lua
-- Nhập dữ liệu
local a = tonumber(io.read())
local b, c = io.read():match("(%d+)%s+(%d+)")
b, c = tonumber(b), tonumber(c)
-- Tính toán và in kết quả
print(a + b - c)
Dart
import 'dart:io';
void main() {
// Nhập dữ liệu
int a = int.parse(stdin.readLineSync()!);
var bc = stdin.readLineSync()!.split(' ');
int b = int.parse(bc[0]);
int c = int.parse(bc[1]);
// Tính toán và in kết quả
print(a + b - c);
}
F
open System
// Nhập dữ liệu
let a = Console.ReadLine() |> int
let bc = Console.ReadLine().Split() |> Array.map int
let b = bc.[0]
let c = bc.[1]
// Tính toán và in kết quả
printfn "%d" (a + b - c)
Visual Basic
Imports System
Module Program
Sub Main()
' Nhập dữ liệu
Dim a As Integer = Integer.Parse(Console.ReadLine())
Dim tokens As String() = Console.ReadLine().Split()
Dim b As Integer = Integer.Parse(tokens(0))
Dim c As Integer = Integer.Parse(tokens(1))
' Tính toán và in kết quả
Console.WriteLine(a + b - c)
End Sub
End Module
Scala
object Main {
def main(args: Array[String]): Unit = {
// Nhập dữ liệu
val a = scala.io.StdIn.readInt()
val Array(b, c) = scala.io.StdIn.readLine().split(" ").map(_.toInt)
// Tính toán và in kết quả
println(a + b - c)
}
}
Objective-C
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int a, b, c;
char buffer[100];
// Nhập số a
fgets(buffer, sizeof(buffer), stdin);
a = atoi(buffer);
// Nhập số b và c
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%d %d", &b, &c);
// Tính toán và in kết quả
NSLog(@"%d", a + b - c);
}
return 0;
}
Assembly (x86)
section .data
format_in db "%d", 0
format_in2 db "%d %d", 0
format_out db "%d", 10, 0
section .bss
a resd 1
b resd 1
c resd 1
section .text
global main
extern scanf, printf
main:
; Nhập số a
push a
push format_in
call scanf
add esp, 8
; Nhập số b và c
push c
push b
push format_in2
call scanf
add esp, 12
; Tính a + b - c
mov eax, [a]
add eax, [b]
sub eax, [c]
; In kết quả
push eax
push format_out
call printf
add esp, 8
; Kết thúc chương trình
xor eax, eax
ret
Assembly (x64)
section .data
format_in db "%d", 0
format_in2 db "%d %d", 0
format_out db "%d", 10, 0
section .bss
a resd 1
b resd 1
c resd 1
section .text
global main
extern scanf, printf
main:
; Lưu các thanh ghi
push rbp
mov rbp, rsp
; Nhập số a
lea rdi, [format_in]
lea rsi, [a]
xor rax, rax
call scanf
; Nhập số b và c
lea rdi, [format_in2]
lea rsi, [b]
lea rdx, [c]
xor rax, rax
call scanf
; Tính a + b - c
mov eax, [a]
add eax, [b]
sub eax, [c]
; In kết quả
lea rdi, [format_out]
mov rsi, rax
xor rax, rax
call printf
; Kết thúc chương trình
xor rax, rax
leave
ret
NASM
section .data
format_in db "%d", 0
format_in2 db "%d %d", 0
format_out db "%d", 10, 0
section .bss
a resd 1
b resd 1
c resd 1
section .text
global main
extern scanf, printf
main:
; Nhập số a
push a
push format_in
call scanf
add esp, 8
; Nhập số b và c
push c
push b
push format_in2
call scanf
add esp, 12
; Tính a + b - c
mov eax, [a]
add eax, [b]
sub eax, [c]
; In kết quả
push eax
push format_out
call printf
add esp, 8
; Kết thúc chương trình
xor eax, eax
ret
NASM64
section .data
format_in db "%d", 0
format_in2 db "%d %d", 0
format_out db "%d", 10, 0
section .bss
a resd 1
b resd 1
c resd 1
section .text
global main
extern scanf, printf
main:
; Lưu các thanh ghi
push rbp
mov rbp, rsp
; Nhập số a
lea rdi, [format_in]
lea rsi, [a]
xor rax, rax
call scanf
; Nhập số b và c
lea rdi, [format_in2]
lea rsi, [b]
lea rdx, [c]
xor rax, rax
call scanf
; Tính a + b - c
mov eax, [a]
add eax, [b]
sub eax, [c]
; In kết quả
lea rdi, [format_out]
mov rsi, rax
xor rax, rax
call printf
; Kết thúc chương trình
xor rax, rax
leave
ret
Hướng dẫn nộp bài bằng ngôn ngữ Scratch
Thay vì nộp code như đa số các ngôn ngữ khác, bạn cần nộp file .sb3
đối với Scratch.
Ở trang đề bài, nhấn vào nút "Gửi bài giải" ở góc trên bên phải:
Chọn ngôn ngữ Scratch:
Khung code sẽ thay đổi để cho phép nộp file:
Các lưu ý khi làm bài bằng Scratch
Nhập dữ liệu
Nhập dữ liệu bằng block Ask () and Wait
. Mặc định mỗi block này sẽ nhập một dòng từ luồng vào chuẩn. Ví dụ với dữ liệu đầu vào:
1 2
3 4
sẽ được chuyển thành hai dòng 1 2
và 3 4
, tương ứng với hai block Ask () and Wait
.
Để nhập theo token (ví dụ trên tương ứng với bốn token 1
, 2
, 3
, 4
), đặt câu hỏi của block Ask () and Wait
thành read_token
. Xem ví dụ ở cuối trang để hiểu thêm.
Xuất dữ liệu
Dùng block Say ()
hoặc Think ()
để xuất ra luồng ra chuẩn. Hai block này có sự khác biệt nhỏ:
Say ()
xuất dữ liệu kèm dấu xuống dòng (\n
)Think ()
chỉ xuất dữ liệu, không xuất dấu xuống dòng (\n
)
Ví dụ với bài A + B - C
Kết quả nộp bài
Kết quả nộp bài sẽ trả cho bạn một thông tin gọi lại là Status Code
- là một mã ngắn thể hiện thông tin về bài nộp của bạn, hiện tại có những mã sau đây:
Code | Giải thích |
---|---|
AC - Accepted | Chương trình đã chạy đúng với toàn bộ test của đề bài. |
WA - Wrong Answer | Chương trình đưa ra output không giống với output chuẩn. |
RTE - Runtime Exception | Thường biết với cái tên Runtime Error. Chương trình sinh lỗi và trả về một giá trị khác 0 và lỗi này đa số chỉ xuất hiện khi bạn dùng ngôn ngữ như C hoặc C++. Các bạn có thể xem ở link này về một số lỗi RTE thường xuất hiện. |
IR - Invalid Return | Chương trình trả về một giá trị khác 0, cũng giống RTE, nhưng nó thường xuất hiện ở các ngôn ngữ Python hoặc Java khi bạn xử lý ngoại lệ (exception). |
OLE - Output Limit Exceeded | Chương trình in ra quá nhiều thông in ra output (thường giới hạn là 256MB). |
MLE - Memory Limit Exceeded | Chương trình dùng quá nhiều bộ nhớ. Đôi khi lỗi này sẽ gây ra RTE thay vì MLE. |
TLE - Time Limit Exceeded | Chương trình chạy quá thời gian quy định. |
IE - Internal Error | Lỗi hệ thống. Lỗi này có thể do bài tập chưa được cấu hình đúng, hoặc do lỗi ở máy chấm. Nếu bạn thấy lỗi này, bạn có thể thử nộp lại bài tập của mình, nếu vẫn không được thì bạn có thể liên hệ với admin hoặc người ra đề. |
Phản hồi từ trình chấm
Lưu ý
Trình chấm coi một token là một từ, ngăn cách bởi 1 hoặc nhiều khoảng trắng (spaces).
Dấu cách thừa không ảnh hưởng đến kết quả chấm bài (trừ trường hợp đề bài có nêu rõ không cho phép khoảng trắng thừa.)
Giải thích thông điệp
Participant's output contains extra tokens
- Giải thích: Kết quả của bạn có số lượng token nhiều hơn kết quả đúng. Ví dụ output chỉ là
2 4
nhưng code của bạn cho ra2 4 6
- Giải thích: Kết quả của bạn có số lượng token nhiều hơn kết quả đúng. Ví dụ output chỉ là
Unexpected EOF in the participant's output
- Giải thích: Trình chấm gặp EOF khi chưa kiểm tra xong, có thể do kết quả của bạn có số token ít hơn số token của kết quả đúng.
Cách tính điểm làm bài trên 300bàicode.vn.
Chúng tôi sử dụng mã nguồn do team VNOI phát triển, do đó cách tính điểm (performance points) cũng sử dụng hệ thống tính điểm giống VNOJ, bạn có thể xem hệ chi tiết cách tính điểm đang được áp dụng tại đây, phiên bản gốc tại đây.
Làm sao để đổi màu tài khoản?
Bạn cần tham gia các kỳ thi có rated
. Màu của tài khoản sẽ dựa trên rating của bạn theo bảng dưới đây.
Tên | Khoảng rating |
---|---|
Newbie | < 1200 |
Pupil | 1200 – 1399 |
Specialist | 1400 – 1599 |
Expert | 1600 – 1899 |
Candidate Master | 1900 – 2100 |
Master | 2200 – 2299 |
International Master | 2300 – 2399 |
Grandmaster | 2400 – 2599 |
International Grandmaster | 2600 – 2899 |
Legendary Grandmaster | ≥ 2900 |
Mình có thể liên hệ với admin bằng cách nào?
Bạn có thể liên hệ với chúng tôi qua Fanpage Facebook 300 bài code thiếu nhi.
Mình có thể tham khảo mã nguồn 300bàicode.vn không?
300bàicode.vn được phát triển dựa trên nền tảng của hệ thống DMOJ, sử dụng bản fork do team VNOI phát triển.