Một số khái niệm cơ bản của tin học

ĐÁ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);

}

dài thế anh

Bình luận (0)
Bình luận (2)
Kậu...chủ...nhỏ...!!!
30 tháng 7 lúc 12:49

dài dữ

Bình luận (0)

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!

Bình luận (0)
Cậu_Chủ_Nhỏ ...!
30 tháng 7 lúc 11:32

Chúc mừng các bạn nha! Congratulations!

Bình luận (0)
ILoveMath
30 tháng 7 lúc 11:34

chúc mừng các anh, chị

Bình luận (0)
Ħäńᾑïě🧡♏
22 tháng 7 lúc 11:56

fan cứng nè

Bình luận (2)

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!

Bình luận (0)
M r . V ô D a n h
22 tháng 7 lúc 12:20

chúc mừng nhá

Bình luận (2)

ĐÁ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);
}

M r . V ô D a n h
21 tháng 7 lúc 21:03

dàiiiiiiiiiiiiiiiiiiiiiiiiiii

Bình luận (1)
弃佛入魔
21 tháng 7 lúc 21:03

cmt đầu có được fan cứng không

Bình luận (1)
Kậu...chủ...nhỏ...!!!
21 tháng 7 lúc 21:06

ai đúng hết hoặc nhiều thì chúc mừng

Bình luận (0)
Hồng Phúc
21 tháng 7 lúc 11:18

1

Bình luận (1)
Hồng Phúc
21 tháng 7 lúc 11:18

2

Bình luận (0)
Hồng Phúc
21 tháng 7 lúc 11:18

3

Bình luận (0)
M r . V ô D a n h
15 tháng 7 lúc 10:13

chúc mừng

Bình luận (0)

chúc mừng đã vượt qua vong một

Bình luận (0)
OH-YEAH^^
15 tháng 7 lúc 10:32

chúc mùng các bạn

Bình luận (1)

ĐÁ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';

}

}

Nhìn dài quá

Bình luận (4)
HT2k02
15 tháng 7 lúc 6:11

dùng cả vector lận, hơi căng

 

Bình luận (0)
Ħäńᾑïě🧡♏
15 tháng 7 lúc 6:24

dài quá oho

Bình luận (0)
Tran Nguyễn Đăng Dương
14 tháng 7 lúc 11:30

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

Bình luận (0)
Tran Nguyễn Đăng Dương
14 tháng 7 lúc 11:30

Comment 2, anh Thịnh bắt comment 5 lần, ko hiểu vì sao

Bình luận (0)
Tran Nguyễn Đăng Dương
14 tháng 7 lúc 11:31

Comment 3, đọc comment 2 để hiểu lí do spam

Bình luận (0)
Ở đây có bán nỗi buồn
12 tháng 7 lúc 2:13

Góp ý chút ngta tl quá 3p thì bạn không nên vào tl.

Bình luận (0)
Ħäńᾑïě🧡♏
12 tháng 7 lúc 2:55

Chán ghê đoán trượt rùi 

Bình luận (1)

[MINAGAME DỰ ĐOÁN TRẬN CHUNG KẾT NỘI DUNG ĐƠN NAM GIẢI QUẦN VỢT WIMBLEDON 2021]

Xin chào các bạn, theo như mình được biết thì các bạn đã hoàn thành xong các kì thi quan trọng trong mùa hè năm nay đúng không ạ?

Và nếu những bạn nào yêu thích bộ môn quần vợt thì trong ngày hôm nay sẽ không thể bỏ qua trận chung kết nội dung đơn nam giải quần vợt Wimbledon 2021 giữa tay vợt số 1 thế giới Novak Djokovic và tay vợt Marteo Berrettini sẽ diễn ra vào lúc 20h tối nay theo giờ Việt Nam, và sẽ được trực tiếp trên kênh Thể thao TV. 

Thể thức Minigame: 

-Các bạn sẽ dự đoán tỉ số chung cuộc của trận đấu, tỉ số các set lần lượt là bao nhiêu.

Vd: Djokovic 3-0 Berrettini(6-3; 6-3; 6-4) 

-Mỗi bạn chỉ được dự đoán 1 lần duy nhất

-Thời gian từ lúc này cho đến 20h ngày 11/7/2021

-Mọi dự đoán sau 20h tối nay đều sẽ bị coi là không hợp lệ

Phần thưởng:

Sẽ chỉ có 1 giải thưởng duy nhất dành cho bạn nào đoán đúng kết quả trận đấu(người chiến thắng, tỉ số chung cuộc và tỉ số các set) và nhanh nhất. Nếu trong trường hợp không có bạn nào đoán đúng thì bạn có dự đoán gần đúng nhất sẽ giành giải thưởng. Giải thưởng sẽ là 10GP.

NGHIÊM CẤM MỌI HÀNH VI TỔ CHỨC CÁ ĐỘ DƯỚI MỌI HÌNH THỨC Ở DƯỚI BÀI POST NÀY. BẠN NÀO TỔ CHỨC CÁ ĐỘ SẼ BỊ BAN NICK NGAY LẬP TỨC.

Cuối cùng, thay mặt BTC mình xin cảm ơn tất cả mọi người. Mong rằng minigame sẽ diễn ra thành công tốt đẹp.

OH-YEAH^^
11 tháng 7 lúc 15:20
Bình luận (0)
Đỗ Thanh Hải
11 tháng 7 lúc 15:21

đoán thế khó lắm

Bình luận (0)
M r . V ô D a n h
11 tháng 7 lúc 15:21

Djokovic 2-1 Berrettini(6-7; 5-4; 6-3) 

Bình luận (0)

Khoá học trên OLM của Đại học Sư phạm HN

Loading...

Khoá học trên OLM của Đại học Sư phạm HN