Một trong những cách biểu diễn số khá phổ biến trong các đồng hồ điện tử là sử dụng que diêm.
Với số lượng que diêm cho trước, hãy xác định số nhỏ nhất và số lớn nhất mà bạn có thể biểu diễn được. Chú ý bạn không được để thừa que diêm nào khi xếp.
Số que diêm | chữ số biểu diễn | các chữ số sử dụng cho MIN |
2 | 1 | 1 |
3 | 7 | 7 |
4 | 4 | 4 |
5 | 2,3,5 | 2 |
6 | 6,9,0 | 0 |
7 | 8 | 8 |
Nhận xét:
1) Số nhỏ nhất = ít chữ số nhất và trong các số đó có giá trị MIN ó phải chú ý tới các chữ số cần nhiêu que diêm nhất.
2) Số lớn nhất = nhiều chữ số nhất và trong các số đó có giá trị MAX ó xét tới các chữ số cần ít que diêm nhất.
Hàm 1: Tìm MAX
Bắt đầu xác định số lượng số 1 lớn nhất có thể có ( chiếm 2 que diêm – ít nhất)
Số que diêm dư ra là = Số que diêm mod 2 ={0,1}
Th1: Dư 0 => tất cả các chữ số đều là 1
Th2: Dư 1, chữ số đàu tiên bằng số 7 ( chiếm 3 que diêm)
Hàm 2: Tìm MIN
Bắt đầu xác định số lượng số 8 lớn nhất có thể có ( chiếm 7 que diêm – nhiều nhất)
Số que diêm dư ra = Số que diêm mod 7 = {0,1,2,3,4,5,6}
+ Nếu không dư ( =0) tra về giá trị MIN
+Dư 1: Bỏ bớt 1 số 8 thay thế bằng số 0 và 1 ( cần 8 que)
+Dư 2 -> 6: thay the số 8 bằng các sô tương ứng ( 1,7,4,2,0)
#include<iostream>
#include<fstream.h>
using namespace std;
void max(int n)
{
cout<<" ";
if(n%2)cout<< 7;
for( int i =1;i< n/2;i++) cout<<1;
}
void min(int n)
{
int a[7] = {8,10,1,7,4,2,0 };
cout<< a[n%7];
for(int i =1;i< n/7;i++)cout<< 8;
}
int main()
{
int n, sum;
// sum = so bo so
ifstream f;
f.open ("C.txt");
f >> sum;
for(int i=1;i<=sum;i++)
{
f >>n;
min(n); max(n);
cout<< endl;
}
system("pause");
return 0;
}
0 comments:
Post a Comment