Đến nội dung

Hình ảnh

Đề thi Tin học trẻ TP Đà Nẵng 2010-2011

- - - - -

  • Please log in to reply
Chủ đề này có 8 trả lời

#1
perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản lý Toán Ứng dụng
  • 4991 Bài viết
Bài 1: (5đ)
Nhập vào một số nguyên dương N từ bàn phím (N<= 1000). In ra màn hình các thông tin sau:
- Tổng các ước tự nhiên của N
- Tích các chữ số của N

Giới hạn: 1 giây

Bài 2: (5đ)
Nhập từ bàn phím số nguyên dương N (N<=30). Hãy in ra màn hình số fibonacci thứ N.

Giới hạn: 1 giây

Bài 3: (5đ) Số kề trước.
Cho một số tự nhiên N có K chữ số (0<K<=255). Bằng cách hoán vị các chữ số của N, ta sẽ được một số tự nhiên H.
Yêu cầu: Hãy tìm một số H lớn nhất và nhỏ hơn N từ cách làm trên

Input: File văn bản KETRUOC.INP gồm:
-dòng thứ 1 ghi số nguyên dương m (m<=10)
-m dòng tiếp theo, mỗi dòng ghi một số N.

Output: File văn bản KETRUOC.OUT có m dòng, mỗi dòng chứa một số H. Nếu không có số H thì ghi kết quả là -1.

Giới hạn: 5 giây.

Bài 4: (5đ) Xóa số
Cho trước một dãy gồm N số nguyên không âm x1,x2,x3,...,xN và một số nguyên dương K. Hãy xóa đi ít nhất các phần tử trong dãy số trên để tổng các số còn lại bằng K.

Input: File văn bản XOASO.INP gồm 2 dòng:
-Dòng đầu ghi lại 2 số nguyên N và K cách nhau ít nhất 1 dấu cách, trong đó 0<N; K<=100
-Dòng thứ 2 ghi N số nguyên không âm có giá trị không quá 100, mỗi số cách nhau ít nhất 1 dấu cách.

Output: File văn bản XOASO.OUT ghi một số nguyên M là số phần tử ít nhất cần xóa. Trường hợp không có phương án xóa nào thỏa mãn các phần tử còn lại có tổng bằng K thì ghi ra số M có giá trị bằng -1.

Giới hạn: 5 giây.

Bài viết đã được chỉnh sửa nội dung bởi perfectstrong: 18-04-2011 - 19:19

Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D
$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$
I'm still there everywhere.

#2
novae

novae

    Chán học.

  • Thành viên
  • 433 Bài viết

Bài 1: (5đ)
Nhập vào một số nguyên dương N từ bàn phím (N<= 1000). In ra màn hình các thông tin sau:
- Tổng các ước tự nhiên của N
- Tích các chữ số của N

Giới hạn: 1 giây

Bài 2: (5đ)
Nhập từ bàn phím số nguyên dương N (N<=30). Hãy in ra màn hình số fibonacci thứ N.

Giới hạn: 1 giây


Lâu rồi cũng không lên VMF vì nhiều lí do. Hôm nay lên thấy cái đề hay hay nên làm thử.
Bên dưới là cách làm của mình cho bài 1+2, code C++, 2 bài còn lại sẽ gửi lên sau; file đính kèm bên dưới là file .cpp và file .exe

Bài 1:
#include<iostream.h>
#include<stdlib.h>

int main(void)
{
	int n,i,s,p,m,d;
	cout<<"Nhap so nguyen n: ";
	cin>>n;
	s=0;
	for(i=1;i<=n;i++)
		if (n%i==0)
			s=s+i;
	p=1;m=n;
	while(m!=0)
		{
			d=m%10;
			p=p*d;
			m=m/10;
		}
	cout<<"Tong cac uoc tu nhien cua "<<n<<" la "<<s<<'\n';
	cout<<"Tich cac chu so cua "<<n<<" la "<<p<<'\n';
	system("pause");
}

Bài 2:
#include<iostream.h>
#include<stdlib.h>

int main(void)
{
	int f1=1,f2=1,t,n,i;
	cout<<"Nhap n: ";
	cin>>n;
	for(i=1;i<=n;i++)
		{
			t=f1;
			f1=f2;
			f2=f1+t;
		}
	cout<<"So Fibonacci thu "<<n<<" la "<<t<<'\n';
	system("pause");
}

File gửi kèm

  • File gửi kèm  bai1_2.rar   105.51K   247 Số lần tải

Bài viết đã được chỉnh sửa nội dung bởi novae: 18-04-2011 - 19:50

KEEP MOVING FORWARD

#3
perfectstrong

perfectstrong

    $LOVE(x)|_{x =\alpha}^\Omega=+\infty$

  • Quản lý Toán Ứng dụng
  • 4991 Bài viết
code free pascal:
bai 1:
program bl1;
uses crt;
var n,i,s:integer;
begin
clrscr;
write('Moi nhap n=');
readln(n);
s:=0;
for i:=1 to n do
if n mod i=0 then s:=s+i;
writeln('Tong cac uoc tu nhien cua',n,'=',s);
writeln('Tich cac chu so cua ',n,'=');
s:=1;
while n>0 do
begin
s:=s*(n mod 10);
n:=n div 10;
end;
write(s);
readln
end.
bai 2:
program bl2;
uses crt;
var a,b:int64;
i,n:byte;
begin
clrscr;
write('Moi nhap n=');
readln(n);
i:=2;
a:=1;
b:=1;
while i<n do
begin
inc(i);
if i mod 2=1 then a:=a+b
else b:=b+a;
end;
if i mod 2=1 then write(a)
else write(b);
readln
end.

Luôn yêu để sống, luôn sống để học toán, luôn học toán để yêu!!! :D
$$\text{LOVE}\left( x \right)|_{x = \alpha}^\Omega = + \infty $$
I'm still there everywhere.

#4
David Evans

David Evans

    Lính mới

  • Thành viên
  • 2 Bài viết

Bài 3: (5đ) Số kề trước.
Cho một số tự nhiên N có K chữ số (0<K<=255). Bằng cách hoán vị các chữ số của N, ta sẽ được một số tự nhiên H.
Yêu cầu: Hãy tìm một số H lớn nhất và nhỏ hơn N từ cách làm trên

Input: File văn bản KETRUOC.INP gồm:
-dòng thứ 1 ghi số nguyên dương m (m<=10)
-m dòng tiếp theo, mỗi dòng ghi một số N.

Output: File văn bản KETRUOC.OUT có m dòng, mỗi dòng chứa một số H. Nếu không có số H thì ghi kết quả là -1.

Giới hạn: 5 giây.


Đề này ra cùi bắp quá, mình sửa lại tí.

Input: File văn bản KETRUOC.INP gồm:
-Nhập vào 1 số n
Output: 1 số h lớn nhất, nhưng nhỏ hơn n sau khi được hoán vị

Mình viết bằng C++
#include <iostream>
using namespace std;
int dem(int n){
    int i=0;
    while(n!=0){
	    n=n/10;
	    i++;
    }
    return i;
};//Dem so
void tach_so(int *p,int d,int n){
    for(int i=1;i<=d;i++){
	    p[i]=n%10;
	    n=n/10;
    }
}//Tach so
int so_nho_hon_n(int *p,int d){
    int a[100];
    int max=p[d];
    int dem=1;
    int temp;
    for(int i=1;i<=d;i++)
	    if(p[i]<max){
		    a[dem]=p[i];
		    dem=dem+1;
	    }
    max=a[1];
    for(int i=1;i<=dem-1;i++){
	    if(a[i]>max) max=a[i];
    }
    return max;
}//Tim so lon nhat nho hon p[1]
bool kiem_tra_so(int *p,int d){
    bool check;
    int min=p[1];
    for(int i=1;i<=d;i++)
	    if(p[i]<min) min=p[i];
    if(min==p[1])
	    check=false;
    else check=true;
    return check;
}//Kiem tra co the hoan vi duoc khong
void sapxep(int *p,int d){
    int temp;
    for(int i=1;i<=d-1;i++){
	    for(int j=i+1;j<=d;j++)
		    if(p[i]<p[j]){
			    temp=p[i];
			    p[i]=p[j];
			    p[j]=temp;
		    }
    }
}//Sap xep theo thu tu giam dan
void Show(int so_dau,int *p,int d){
    cout<<so_dau;
    for(int i=1;i<=d;i++){
	    if(p[i]!=so_dau)
		    cout<<p[i];
    }
}//In ra so sau khi hoan vi
int main()
{
    int n=321,na;
    int d;//Bien dem
    d=dem(n);
    int *p;
    p = new int[d];
    tach_so(p,d,n);
    if(kiem_tra_so(p,d)==false){
	    int so_dau=so_nho_hon_n(p,d);
	    sapxep(p,d);
	    Show(so_dau,p,d);
    }
    else cout<<"So nay khong the hoan vi duoc nua";
    return 0;
}


#5
nghethuat102

nghethuat102

    Trung sĩ

  • Thành viên
  • 147 Bài viết

Lâu rồi cũng không lên VMF vì nhiều lí do. Hôm nay lên thấy cái đề hay hay nên làm thử.
Bên dưới là cách làm của mình cho bài 1+2, code C++, 2 bài còn lại sẽ gửi lên sau; file đính kèm bên dưới là file .cpp và file .exe

Bài 1:

#include<iostream.h>
#include<stdlib.h>

int main(void)
{
	int n,i,s,p,m,d;
	cout<<"Nhap so nguyen n: ";
	cin>>n;
	s=0;
	for(i=1;i<=n;i++)
		if (n%i==0)
			s=s+i;
	p=1;m=n;
	while(m!=0)
		{
			d=m%10;
			p=p*d;
			m=m/10;
		}
	cout<<"Tong cac uoc tu nhien cua "<<n<<" la "<<s<<'\n';
	cout<<"Tich cac chu so cua "<<n<<" la "<<p<<'\n';
	system("pause");
}
Bài 2:
#include<iostream.h>
#include<stdlib.h>

int main(void)
{
	int f1=1,f2=1,t,n,i;
	cout<<"Nhap n: ";
	cin>>n;
	for(i=1;i<=n;i++)
		{
			t=f1;
			f1=f2;
			f2=f1+t;
		}
	cout<<"So Fibonacci thu "<<n<<" la "<<t<<'\n';
	system("pause");
}

Bạn có thể chỉ dạy cho mình lập trình c vs đc k? 



#6
The Dark Hunter

The Dark Hunter

    Binh nhất

  • Thành viên mới
  • 20 Bài viết
xin thuật toán bài 3,4 với.thanks ạ

Đức HD Trần:  :icon6:  :D  :like 

 

AK36 Trường THPT Quang Trung tỉnh Hải Dương


#7
The Dark Hunter

The Dark Hunter

    Binh nhất

  • Thành viên mới
  • 20 Bài viết


Bài 3: (5đ) Số kề trước.
Cho một số tự nhiên N có K chữ số (0<K<=255). Bằng cách hoán vị các chữ số của N, ta sẽ được một
Bài 4: (5đ) Xóa số
Cho trước một dãy gồm N số nguyên không âm x1,x2,x3,...,xN và một số nguyên dương K. Hãy xóa đi ít nhất các phần tử trong dãy số trên để tổng các số còn lại bằng K.

Input: File văn bản XOASO.INP gồm 2 dòng:
-Dòng đầu ghi lại 2 số nguyên N và K cách nhau ít nhất 1 dấu cách, trong đó 0<N; K<=100
-Dòng thứ 2 ghi N số nguyên không âm có giá trị không quá 100, mỗi số cách nhau ít nhất 1 dấu cách.

Output: File văn bản XOASO.OUT ghi một số nguyên M là số phần tử ít nhất cần xóa. Trường hợp không có phương án xóa nào thỏa mãn các phần tử còn lại có tổng bằng K thì ghi ra số M có giá trị bằng -1.

Giới hạn: 5 giây.

Uses crt;
Var n,j,k,i,a: integer;
max,m: char;
s: string;
Begin
clrscr;
write('nhap s=');
readln(s);
n := length(s);
i := n;
max :='*';
If s[n]<s[n-1] Then
Begin
m := s[n];
s[n] := s[n-1];
s[n-1] := m;
End
Else
Begin
While s[i]>=s[i-1] Do dec(i);
For j:=i To n Do
If (s[i-1]>s[j])And(s[j]>max) Then
Begin
max:=s[i];
m := s[i-1];
s[i-1] := s[j];
s[j] := m;
End;
For j:=i To n-1 Do
For k:=j+1 To n Do
If s[j]<s[k] Then
Begin
m := s[j];
s[j] := s[k];
s[k] := m;
End;
End;
if s[1]='0' then delete(s,1,1);
if i<0 then writeln('khong tim dc so hoan vi nhu vay') else
writeln('so can tim la:',s);
readln
End.

Đức HD Trần:  :icon6:  :D  :like 

 

AK36 Trường THPT Quang Trung tỉnh Hải Dương


#8
Nobel

Nobel

    Hạ sĩ

  • Thành viên
  • 93 Bài viết

Uses crt;
Var n,j,k,i,a: integer;
max,m: char;
s: string;
Begin
clrscr;
write('nhap s=');
readln(s);
n := length(s);
i := n;
max :='*';
If s[n]<s[n-1] Then
Begin
m := s[n];
s[n] := s[n-1];
s[n-1] := m;
End
Else
Begin
While s[i]>=s[i-1] Do dec(i);
For j:=i To n Do
If (s[i-1]>s[j])And(s[j]>max) Then
Begin
max:=s[i];
m := s[i-1];
s[i-1] := s[j];
s[j] := m;
End;
For j:=i To n-1 Do
For k:=j+1 To n Do
If s[j]<s[k] Then
Begin
m := s[j];
s[j] := s[k];
s[k] := m;
End;
End;
if s[1]='0' then delete(s,1,1);
if i<0 then writeln('khong tim dc so hoan vi nhu vay') else
writeln('so can tim la:',s);
readln
End.

Đây là ct hoán vị của 1 số à ??

Nếu phải thì bạn có thể nói ý tưởng giúp mình đc ko ?,Thank.


" Im lặng là câu trả lời tốt nhất mà bạn có thể dành cho kẻ ba hoa " !

 




 

 


#9
The Dark Hunter

The Dark Hunter

    Binh nhất

  • Thành viên mới
  • 20 Bài viết

Đây là ct hoán vị của 1 số à ??
Nếu phải thì bạn có thể nói ý tưởng giúp mình đc ko ?,Thank.

mk kiểm tra dãy theo thứ tự giảm dần từ cuối về đầu hoán đổi số lớn nhì lên đầu các số còn sắp xếp giảm dần
vd 282578
dãy 82578
chuyển thành 78852

Đức HD Trần:  :icon6:  :D  :like 

 

AK36 Trường THPT Quang Trung tỉnh Hải Dương





1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh