ĐÁP ÁN VÒNG 3 CUỘC THI TIN HỌC LẦN 3
Câu 1(2 điểm) Bài làm của bạn Nguyễn Khánh Tài Huy
var a,b,tg1,tg2,UC: longint;
f1,f2: text;
function tguoc(x: longint): longint;
var i,tg: longint;
begin
tg:=0;
for i:=1 to trunc(sqrt(x)) do
if x mod i = 0 then
begin
tg:=tg+i;
tg:=tg+x div i;
if i*i=x then tg:=tg-i;
end;
exit(tg);
end;
function UCLN(a,b: longint): longint;
begin
if a=0 then exit(b)
else UCLN:=UCLN(b mod a,a);
end;
begin
readln(a);
readln(b);
tg1:=tguoc(a);
tg2:=tguoc(b);
if tg1*b=tg2*a then
begin
UC:=ucln(tg1,a);
tg1:=tg1 div UC;
a:=a div UC;
writeln(tg1);
writeln(a);
end
else writeln(-1);
end.
Câu 2(4 điểm) Bài làm của bạn Trần Nguyễn Đăng Dương
#include <bits/stdc++.h>
using namespace std;
#define div 1000000007
#define arrst {{1,1},{1,0}}
long long x;
void power(long long a[2][2], long long n);
void multi(long long a[2][2], long long b[2][2]);
long long fibo(long long n)
{
long long f[2][2]=arrst;
power(f,n-1);
return f[0][0];
}
void power(long long a[2][2], long long n)
{
if ((n==0) || (n==1)) return;
long long b[2][2]=arrst;
power(a,n/2);
multi(a,a);
if (n%2==1)
multi(a,b);
}
void multi(long long a[2][2], long long b[2][2])
{
long long x = (((a[0][0]%div) * (b[0][0]%div))%div + ((a[0][1]%div) * (b[1][0]%div))%div)%div;
long long y = (((a[0][0]%div) * (b[0][1]%div))%div + ((a[0][1]%div) * (b[1][1]%div))%div)%div;
long long z = (((a[1][0]%div) * (b[0][0]%div))%div + ((a[1][1]%div) * (b[1][0]%div))%div)%div;
long long w = (((a[1][0]%div) * (b[0][1]%div))%div + ((a[1][1]%div) * (b[1][1]%div))%div)%div;
a[0][0]=x; a[0][1]=y; a[1][0]=z; a[1][1]=w;
}
int main()
{
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
long long t; cin>>t;
for (long long i=1;i<=t;i++)
{
cin>>x;
cout<<fibo(x)%div<<endl;
}
}
Câu 3(4 điểm) Bài làm của bạn Trần Nguyễn Đăng Dương
#include <bits/stdc++.h>
using namespace std;
struct ii{
long long a; long long b;
};
vector <ii> arr;
long long n,q;
void del(long long numx, long long numy)
{
long long dem=0;
while ((arr[dem].a!=numx) || (arr[dem].b!=numy)) dem++;
arr.erase(arr.begin()+dem);
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
cin>>n>>q;
for (long long i=1;i<=n;i++)
{
long long x,y; cin>>x>>y;
arr.push_back({x,y});
}
for (long long i=1;i<=q;i++)
{
long long t,x,y; cin>>t>>x>>y;
if (t==1) arr.push_back({x,y});
else if (t==2) del(x,y);
else
{
long long maxx=INT_MIN, maxy=INT_MIN;
for (long long i=0;i<arr.size();i++)
{
if (arr[i].b==y) maxx=max(maxx,abs(arr[i].a-x));
if (arr[i].a==x) maxy=max(maxy,abs(arr[i].b-y));
}
if ((maxx!=INT_MIN) && (maxy!=INT_MIN))
{
cout<<maxx*maxy/2;
if (maxx*maxy%2!=0) cout<<".5";
cout<<endl;
}
else cout<<0<<endl;
}
}
}
Câu 4(5 điểm) Bài làm của bạn Nguyễn Khánh Tài Huy
#include <cstdio>
#include <cstdlib>
#include <numeric>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
const int MAXN = 16;
const int MAXL = 1 << 20;
const int inf = 1 << 30;
int n;
char str[MAXN][MAXL];
int cnt[MAXN][26];
int dp[1 << MAXN];
int calc_pref(int mask) {
int len = 0;
int tmp[26];
fill(tmp, tmp+26, inf);
for (int i = 0; i < n; ++i)
if (mask&(1 << i))
for (int j = 0; j < 26; ++j)
tmp[j] = min(tmp[j], cnt[i][j]);
for (int i = 0; i < 26; ++i)
len += tmp[i];
return len;
}
int solve(int mask) {
int &ret = dp[mask];
if (ret != -1) return ret;
int pref = calc_pref(mask);
if ((mask&-mask) == mask) return ret = pref;
ret = inf;
for (int i = (mask - 1) & mask; i > 0; i = (i - 1) & mask) {
int curr = solve(i) + solve(mask ^ i) - pref;
ret = min(ret, curr);
}
return ret;
}
int main (void){
memset(dp, -1, sizeof dp);
scanf("%d", &n);
for (int i = 0; i < n; ++i)
scanf("%s", str[i]);
for (int i = 0; i < n; ++i)
for (int j = 0; str[i][j]; ++j)
cnt[i][str[i][j] - 'a']++;
printf("%d\n", solve((1 << n)-1) + 1);
return 0;
}
Câu 5(5 điểm) Bài làm của bạn Trần Nguyễn Đăng Dương
#include <bits/stdc++.h>
using namespace std;
vector <bool> sang(1000000000,true);
vector <long long> snt;
void sangnt(long long x)
{
for (long long i=2;i<=x;i++)
{
if (sang[i])
{
snt.push_back(i);
for (long long j=i;j*i<=x;j++) sang[i*j]=false;
}
}
}
void num(long long input)
{
long long step_count = 1;
long long step_limit = 2;
long long adder = 1;
long long x = 0, y = 0;
for (long long n = 2; n != input + 1; n++,step_count++)
{
if (step_count <= .5 * step_limit) x += adder;
else if (step_count <= step_limit) y += adder;
if (step_count == step_limit)
{
adder *= -1;
step_limit += 2;
step_count = 0;
}
}
cout << x << " " << y;
}
int main()
{
long long n; cin>>n;
sangnt(n);
long long l=0;
while (snt[l]!=n) l++;
l++;
num(l);
}
THÔNG BÁO KẾT QUẢ VÀ GIẢI THƯỞNG CUỘC THI TIN HỌC LẦN 3-HÈ 2021
Như vậy là sau 8 ngày tranh tài, vòng 3 cuộc thi Tin Học lần 3-hè 2021 cũng đã kết thúc. Xin chúc mừng 3 bạn xuất sắc nhất:
Vị trí | Tên | Điểm | Giải thưởng | Ghi chú |
1 | Nguyễn Khánh Tài Huy | 12,12 | Nhất | 50GP+100 coin |
2 | Trần Nguyễn Đăng Dương | 11,1 | Nhì | 30GP+75 coin |
3 | Hồng Phúc | 7 | Ba | 20GP+60 coin |
Vì sau 2 vòng đầu tiên, có những bạn chưa được nhận thưởng khi qua 2 vòng nên mình xin lập bảng thống kê giải thưởng như sau:
STT | Tên | Số GP chưa được thưởng ở vòng 1 | Số GP chưa được thưởng ở vòng 2 | Tổng |
1 | Phạm Minh Tuấn | 0GP | ||
2 | No Name | 0GP | ||
3 | Hưng Nguyễn Thái | 0GP | ||
4 | Nguyễn Khánh Tài Huy | 5GP | 0GP | 5GP |
5 | Quý Lương | 5GP | 5GP | |
6 | Nguyễn Văn Hoàng | 5GP | 0GP | 5GP |
7 | Quân Trương | 5GP | 10GP | 15GP |
8 | Trần Nguyễn Đăng Dương | 0GP | 10GP | 10GP |
9 | Hồng Phúc | 0GP | 0GP | |
10 | Trần Minh Hoàng | 5GP | 5GP |
Một lần nữa mình xin chúc mừng tất cả các bạn đã đạt giải.
Thầy Thọ sẽ trao giải cho các bạn. Và mình xin cảm ơn các bạn đã tham gia và ủng hộ cuộc thi của mình!
Chúc mừng các em đạt giải nha!
Thịnh lập danh sách trên google sheet or execel rồi gửi thầy Thọ (Ghi tên tài khoản, link tài khoản, tên giải, phần thưởng) nha em!
Chúc mừng các bạn nha! Congratulations!
Thông báo mở Vòng 3-Vòng chung kết cuộc thi Tin Học lần 3-hè năm 2021
Vòng 3 của cuộc thi Tin Học lần 3-hè năm 2021 đã chính thức mở. Thời gian làm bài: Từ bây giờ đến hết ngày 27/7/2021(6 ngày). 5 bạn sẽ tham gia để chọn ra 3 bạn có thành tích tốt nhất để nhận giải thưởng chung cuộc.
5 bạn tham gia bao gồm:
1: Quân Trương(https://hoc24.vn/vip/73772423201)
2: Trần Nguyễn Đăng Dương(https://hoc24.vn/vip/624304595222)
3: Nguyễn Khánh Tài Huy(https://hoc24.vn/vip/2998667340325)
4: Hồng Phúc(https://hoc24.vn/vip/hongphucv9)
5: Nguyễn Văn Hoàng(https://hoc24.vn/vip/259386316906)
Giải thưởng chung cuộc cho 3 bạn xuất sắc nhất ở vòng 3 bao gồm:
-Giải nhất: 50GP và 100 coin
-Giải nhì: 30GP và 75 coin
-Giải ba: 20GP và 60 coin
Link vòng thi: https://hoc24.vn/cuoc-thi/cuoc-thi-tin-hoc-lan-3-do-nguyen-le-phuoc-thinh-to-chuc.4679/vong-3-vong-chung-ket.5466
Chúc các bạn làm bài thật tốt!
Các bạn tham gia cuộc thi nghiêm túc nha! Chúc các bạn làm bài thật tốt!
ĐÁP ÁN VÒNG 2 CUỘC THI TIN HỌC LẦN 3:
Câu 1(2 điểm)
uses crt;
var a:array[1..100000]of int64;
i,n,x,dem:int64;
begin
clrscr;
readln(n,x);
for i:=1 to n do
read(a[i]);
dem:=0;
for i:=1 to n do
if x=a[i] then inc(dem);
writeln(dem);
readln;
end.
Câu 2(2 điểm)
uses crt;
var n,k,i,dem:int64;
a:array[1..1000000]of int64;
{-----------------chuong-trinh-con-quick-sort------------------------}
procedure qs(d,c:int64);
var i,j,x,tam:int64;
begin
i:=d;
j:=c;
x:=a[(i+j) div 2];
repeat
while a[i]<x do
inc(i);
while a[j]>x do
dec(j);
if i<=j then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
inc(i);
dec(j);
end;
until i>j;
if d<j then qs(d,j);
if i<c then qs(i,c);
end;
{---------------chuong-trinh-chinh------------------}
begin
clrscr;
readln(n);
for i:=1 to n do
read(a[i]);
qs(1,n);
k:=a[n];
dem:=0;
for i:=1 to n do
if k=a[i] then inc(dem);
writeln(dem);
readln;
end.
Câu 3(2 điểm) Bài làm của bạn Hưng Nguyễn Thái
var a,b,c:int64;
begin
read(a,b,c);
if (a+b <= c) and ((c-a-b) mod 2 = 0) then write('Yes')
else write('No');
end.
Câu 4(6 điểm) Bài làm của bạn Quý Lương
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
ios_base::sync_with_stdio(false); cout.tie(NULL);
ll n, k;
cin>>n>>k;
ll d=__gcd(n, k);
n/=d; k/=d;
cout << n/k << '.'
n=n%k*10;
ll s=0, t=k;
for (s; t%2==0 or t%5==0; s++) {
if (t%2==0) t/=2;
if (t%5==0) t/=5;
}
for (s; s>0; s--) {
cout << n/k;
n=(n%k) * 10;
}
if (t==1) cout << "(0)";
else {
ll r =10%t;
for (s=1; r!=1; s++) r=r*10 % t;
cout << '('
for (s; s>0; s--) {
cout << n/k;
n=(n%k)*10;
}
cout << ')'
}
}
Câu 5(8 điểm) Bài làm của bạn Trần Nguyễn Đăng Dương
#include <bits/stdc++.h>
using namespace std;
int n;
long long a[100001];
long long f[100001];
void ans(long long x)
{
int dem=1;
for (long long i=2;i*i<=x;i++)
if (x%i==0)
{
f[dem]=i;
if (i!=sqrt(x))
{
f[dem+1]=x/i; dem+=2;
}
else dem++;
}
f[dem]=x;
sort(f+1,f+dem);
for (int i=1;i<=dem;i++) cout<<f[i]<<endl;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
long long gcd=abs(a[2]-a[1]);
for (int i=3;i<=n;i++)
gcd=__gcd(gcd,abs(a[i]-a[i-1]));
ans(gcd);
}
ai đúng hết hoặc nhiều thì chúc mừng
THÔNG BÁO KẾT THÚC VÒNG 2 CUỘC THI TIN HỌC LẦN 3
Như vậy là Vòng 2 đã kết thúc sau 6 ngày thi đấu. Kết quả là 5 bạn có điểm số cao nhất đã lọt vào vòng 3. Danh sách các bạn đó là:
STT | Tên | Điểm |
1 | Quân Trương(https://hoc24.vn/vip/73772423201) | 20 |
2 | Trần Nguyễn Đăng Dương(https://hoc24.vn/vip/624304595222) | 19,7 |
3 | Nguyễn Khánh Tài Huy(https://hoc24.vn/vip/2998667340325) | 19,1 |
4 | Hồng Phúc(https://hoc24.vn/vip/hongphucv9) | 16,1 |
5 | Nguyễn Văn Hoàng(https://hoc24.vn/vip/259386316906) | 15,8 |
-Một số lưu ý:
+Ở vòng 3 các bạn không được sử dụng file, chỉ được nhập dữ liệu từ bàn phím
+Thời gian chạy mỗi test trong từng bài không quá 1s
Các bạn qua được Vòng 2 sẽ được thưởng mỗi bạn 10GP. Các bạn comment dưới bài viết này để được nhận thưởng.
Lịch mở vòng 3: 22/7/2021
Thông báo mở Vòng 2-Vòng bán kết cuộc thi Tin Học lần 3-hè năm 2021
Vòng 2 của cuộc thi Tin Học lần 3-hè năm 2021 đã chính thức mở. Thời gian làm bài: Từ bây giờ đến ngày 20/7/2021(6 ngày). 10 bạn sẽ tham gia để chọn ra 5 bạn có thành tích xuất sắc nhất để bước vào Vòng 3.
10 bạn tham gia bao gồm:
1: Phạm Minh Tuấn(https://hoc24.vn/vip/3007265330270)
2: No Name(https://hoc24.vn/vip/3010426917876)
3: Hưng Nguyễn Thái(https://hoc24.vn/vip/2998586735685)
4: Nguyễn Khánh Tài Huy(https://hoc24.vn/vip/2998667340325)
5: Quý Lương(https://hoc24.vn/vip/262415746700)
6: Nguyễn Văn Hoàng(https://hoc24.vn/vip/259386316906)
7: Quân Trương(https://hoc24.vn/vip/73772423201)
8: Trần Nguyễn Đăng Dương(https://hoc24.vn/vip/624304595222)
9: Hồng Phúc(https://hoc24.vn/vip/hongphucv9)
10: Trần Minh Hoàng(https://hoc24.vn/vip/206737326428)
Những bạn qua được vòng 2 sẽ được thưởng mỗi bạn 10GP.
Link vòng thi: https://hoc24.vn/cuoc-thi/cuoc-thi-tin-hoc-lan-3-do-nguyen-le-phuoc-thinh-to-chuc.4679/vong-2-vong-ban-ket.5324
Chúc các bạn làm bài thật tốt!
chúc mừng đã vượt qua vong một
ĐÁP ÁN VÒNG 1 CUỘC THI TIN HỌC LẦN 3
Câu 1(2 điểm)
uses crt;
var n,dv,ch:integer;
begin
clrscr;
readln(n);
if (0<=n) and (n<=19) then
begin
case n of
0: write('zero');
1: write('one');
2: write('two');
3: write('three');
4: write('four');
5: write('five');
6: write('six');
7: write('seven');
8: write('eight');
9: write('nine');
10: write('ten');
11: write('eleven');
12: write('twelve');
13: write('thirteen');
14: write('fourteen');
15: write('fifteen');
16: write('sixteen');
17: write('seventeen');
18: write('eighteen');
19: write('nineteen');
end;
end
else
begin
dv:=n mod 10;
ch:=n div 10;
case ch of 2:
write('twenty');
3: write('thirty');
4: write('forty');
5: write('fifty');
6: write('sixty');
7: write('seventy');
8: write('eighty');
9: write('ninety');
end;
if dv>0 then
begin
write('-');
case dv of 1:
write('one');
2: write('two');
3: write('three');
4: write('four');
5: write('five');
6: write('six');
7: write('seven');
8: write('eight');
9: write('nine');
end;
end;
end;
end.
Câu 2(2 điểm)
uses crt;
var a,b,t,bcnn:int64;
begin
readln(a,b);
bcnn:=a*b;
t:=b mod a;
while t<>0 do
begin
t:=a mod b;
a:=b;
b:=t;
end;
bcnn:=bcnn div a;
writeln(a,' ',bcnn);
readln;
end.
Câu 3(4 điểm)
uses crt;
var q,i:longint;
n:array[1..10] of longint;
begin
clrscr;
readln(q);
for i:=1 to q do
readln(n[i]);
for i:=1 to q do
begin
if (n[i] mod 4=0) and (n[i] mod 100<>0) then writeln('YES')
else if n[i] mod 400=0 then writeln('YES')
else writeln('NO');
end;
end.
Câu 4(2 điểm)
uses crt;
var n,p,x,dem:int64;
{----------------------chuong-trinh-con-tim-ucln---------------------}
function ucln(a,b:int64):int64;
var t:int64;
begin
t:=b mod a;
while t<>0 do
begin
t:=a mod b;
a:=b;
b:=t;
end;
ucln:=a;
end;
{---------------------chuong-trinh-chinh---------------------}
begin
readln(n,p);
dem:=0;
for x:=1 to n do
if ucln(x,n)=p then inc(dem);
writeln(dem);
end.
Câu 5(10 điểm) Bài làm của bạn @Hưng Nguyễn Thái
#include<bits/stdc++.h>
using namespace std;
#define ll long long #define mod (ll)(1e7+7)
const ll N = 1000000;
ll lp[N+1];
vector<ll > pr;
void solve()
{ for (ll i=2; i<=N; ++i)
{ if (lp[i] == 0)
{ lp[i] = i; pr.push_back (i);
}
for (ll j=0; j<(ll )pr.size() && pr[j]<=lp[i] && i*pr[j]<=N; ++j)
lp[i * pr[j]] = pr[j];
}
}
ll po(ll a,ll n)
{ ll res=a, ans=1; while(n)
{ if(n%2) ans=ans*res%mod; res=res*res%mod; n/=2;
}
return ans;
}
ll aka(ll p, ll alpha)
{
if(alpha==0) return 1;
if(alpha==1) return (p+1);
if(alpha%2==1) return p*aka(p,alpha-1)+1;
if(alpha%2==0) return (po(p,alpha/2)+1)*(aka(p,alpha/2)-1)+1;
}
ll f(ll n)
{
ll tmp,i=0,so_mu,res=1;
while(pr[i]<=n)
{
tmp=pr[i];
so_mu=0;
while(tmp<=n)
{
so_mu = so_mu+ (n/tmp);
tmp=tmp*pr[i];
}
res=res*(so_mu+1)*(so_mu+2)/2%mod; i++;
}
return res;
}
int main(){ ll n,res; solve();
while(1)
{
cin>>n;
if(n==0) break;
res=f(n);
cout<<res<<'\n'
}
}
THÔNG BÁO KẾT THÚC VÒNG 1 CUỘC THI TIN HỌC LẦN 3
Như vậy là Vòng 1 đã kết thúc sau 6 ngày thi đấu. Kết quả là 10 bạn có điểm số cao nhất đã lọt vào vòng 2. Danh sách các bạn đó là:
STT | Tên | Điểm |
1 | Phạm Minh Tuấn(https://hoc24.vn/vip/3007265330270) | 20 |
2 | No Name(https://hoc24.vn/vip/3010426917876) | 20 |
3 | Hưng Nguyễn Thái(https://hoc24.vn/vip/2998586735685) | 18,44 |
4 | Nguyễn Khánh Tài Huy(https://hoc24.vn/vip/2998667340325) | 16,1 |
5 | Quý Lương(https://hoc24.vn/vip/262415746700) | 14,2 |
6 | Nguyễn Văn Hoàng(https://hoc24.vn/vip/259386316906) | 13 |
7 | Quân Trương(https://hoc24.vn/vip/73772423201) | 11 |
8 | Trần Nguyễn Đăng Dương(https://hoc24.vn/vip/624304595222) | 11 |
9 | Hồng Phúc(https://hoc24.vn/vip/hongphucv9) | 11 |
10 | Trần Minh Hoàng(https://hoc24.vn/vip/206737326428) | 10 |
-Một số lưu ý:
+Ở vòng 2 các bạn không được sử dụng file, chỉ được nhập dữ liệu từ bàn phím
+Thời gian chạy mỗi test trong từng bài không quá 1s
Các bạn qua được vòng 1 sẽ được thưởng mỗi bạn 5GP
Anh @Quoc Tran Anh Le sẽ trao thưởng cho các bạn
*Lịch mở vòng 2: 15/7/2021
Nếu bây giờ mình nói cái kì thi này unfair đến mức nào thì chắc ko thi nữa luôn nên thôi
Comment 1
Comment 2, anh Thịnh bắt comment 5 lần, ko hiểu vì sao
Comment 3, đọc comment 2 để hiểu lí do spam
[THÔNG BÁO TRAO THƯỞNG MINIGAME DỰ ĐOÁN CHUNG KẾT NỘI DUNG ĐƠN NAM GIẢI QUẦN VỢT WIMBLEDON 2021]
Như vậy là trận chung kết nội dung đơn nam giải quần vợt Wimbledon 2021 đã kết thúc với phần thắng nghiêng về tay vợt số 1 thế giới Novak Djokovic. Anh đã đánh bại tay vợt Marteo Berrettini với tỉ số 3-1 chung cuộc(Tỉ số các set lần lượt là 6-7; 6-4; 6-4; 6-3). Với chiến thắng này, Djokovic đã có được danh hiệu Grand Slam thứ 20 trong sự nghiệp, cân bằng kỷ lục của hai tay vợt Rafael Nadal và Roger Federer.
Với minigame của mình, rất tiếc không có bạn nào đoán đúng 100% kết quả. Vì vậy, mình sẽ trao giải cho bạn có dự đoán gần đúng nhất với kết quả chung cuộc của trận đấu và dự đoán đó không phạm luật của Minigame.
Và bạn đã đạt được giải thưởng đó là bạn @hoangtg1234(https://hoc24.vn/vip/hoangtg5b).
Xin chúc mừng bạn, và anh Quốc Anh sẽ là người trao giải cho bạn.
Và cuối cùng, thay mặt BTC, mình xin cảm ơn tất cả các bạn đã tham gia Minigame này của mình.
Góp ý chút ngta tl quá 3p thì bạn không nên vào tl.