K
Khách
Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Các câu hỏi dưới đây có thể giống với câu hỏi trên
![](https://rs.olm.vn/images/avt/0.png?1311)
KV
16 tháng 5 2023
Var n,sc,sl,i:longint;
Begin
Write('N = ');readln(n);
Write('Cac so tu 1 den ',n,' la ');
For i:=1 to n do
Write(i:8);
Writeln;
For i:=1 to n do
Begin
If i mod 2 = 0 then sc:=sc+i
Else sl:=sl+i;
End;
Writeln('Tong cac so chan la ',sc);
Write('Tong cac so le la ',sl);
Readln
End.
![](https://rs.olm.vn/images/avt/0.png?1311)
30 tháng 4 2022
A . Đầu vào: Vị trí chỗ ngồi của 2 bạn 1, b trg lớp Đầu ra: Vị trí chỗ ngồi mới của 2 bạn a,b sau khi hoán đổi
![](https://rs.olm.vn/images/avt/0.png?1311)
8 tháng 3 2022
1:
#include <bits/stdc++.h>
using namespace std;
long long a[100],i,n;
int main()
{
cin>>n;
for (i=1; i<=n; i++) cin>>a[i];
cout<<"Day ban dau la: "<<endl;
for (i=1;i<=n; i++) cout<<a[i]<<" ";
cout<<endl;
sort(a+1,a+n+1);
cout<<"Day tang dan la: "<<endl;
for (i=1; i<=n; i++) cout<<a[i]<<" ";
return 0;
}
Bạn tham khảo theo code C++ nhé!
Bài này khá hay nên mình sẽ giải thích 1 chút về thuật toán mà mình sử dụng.
Thường thì 1 số bạn sẽ nghĩ đến sử dụng vòng lặp, nhưng đối với bài với giá trị của a và b lớn thì dùng vòng lặp ở những Testcase ở 60% sẽ dễ bị quá thời gian không đạt được điểm tối đa.
Hướng giải quyết code của mình làm như sau:
Dãy TINHOCTREQUANGNINH là 1 dãy có 18 kí tự sẽ tạo 1 dãy vô hạn
=> Mỗi kí tự sẽ được gán 1 chỉ số chia lấy dư cho 18.
Ví dụ chuỗi s = "TINHOCTREQUANGNINH"
Ví dụ a = 19 khi thì a%18 = 1. Thì nó sẽ lấy kí tự đầu và b cũng tương tự. Đối với trường hợp a hoặc b %18=0 thì chỉ số đó cũng sẽ bằng 18 vì a%18=0 hoặc b%18=0 chỉ đến vị trí cuối của chuỗi.
Mình chia làm 3 trường hợp như sau:
- TH1: Lấy các kí tự từ 1 chuỗi gốc TINHOCTREQUANGNINH (a%18 < b%18)
-> Đối với trường hợp này thì chỉ cần in ra các kí tự từ a%18 đến b%18. Trong C++ chỉ số bắt đầu là 0 nên mình dùng a%18-1
-TH2: Cần ghép 2 chuỗi lại để lấy kí tự, ví dụ a = 15 và b = 21 => Kết quả là NINHTIN
Để dễ hình thì ta phải ghép 2 chuỗi s lại như sau: TINHOCTREQUANGNINHTINHOCTREQUANGNINH
Đối với trường hợp 2 này thì a%18 sẽ > b%18.
Do vậy mình sẽ in các kì tự từ a%18 đến 18 của chuỗi TINHOCTREQUANGNINH. Tiếp tục in tiếp từ vị trí đầu chuỗi đến b%18 của chuỗi. => Sẽ tạo ra được 1 chuỗi theo yêu cầu của Input
- TH3: a = b
Trường hợp này mình in ra kí tự thứ a hoặc b. Để tiết kiệm thời gian khi sử dụng vòng lặp thì sẽ tương ứng với s[a%18-1] . Vì trong C++ chỉ số chuỗi bắt đầu là 0 nên -1 để đúng với yêu cầu bài toán đặt ra.