Link Sub: http://www.spoj.com/PTIT/problems/BCMATHP/
Người Gửi: Dương Lee
- Problem:
Cho 2 số nguyên A (0 <= A <= 45) and B (1 <= B <= 9)
Bạn phải xác định số nguyên E trong đoạn 1..62. Sao cho:
E là số nguyên nhỏ nhất trong khoảng mà lớn hơn A và có B là chữ số đầu tiên trong biểu diễn lũy thừa 2 mũ E. Nếu không có đáp án, in ra số 0.
Ví dụ, cho A=1 and B=6.
Ta có thể biểu diễn:
E 2^E Chữ số đầu tiên của 2^E
1 2 2
Bạn phải xác định số nguyên E trong đoạn 1..62. Sao cho:
E là số nguyên nhỏ nhất trong khoảng mà lớn hơn A và có B là chữ số đầu tiên trong biểu diễn lũy thừa 2 mũ E. Nếu không có đáp án, in ra số 0.
Ví dụ, cho A=1 and B=6.
Ta có thể biểu diễn:
E 2^E Chữ số đầu tiên của 2^E
1 2 2
2 4 4
3 8 8
4 16 1
5 32 3
6 64 6
Vì vậy, E=6 là đáp án chính xác.
Input3 8 8
4 16 1
5 32 3
6 64 6
Vì vậy, E=6 là đáp án chính xác.
* Dòng 1: 2 số nguyên cách bởi dấu cách: A và B
Output
* Dòng 1: 1 số nguyên E thỏa mãn đề bài. Nếu không tồn tại, in ra 0.
Example:
* Dòng 1: 1 số nguyên E thỏa mãn đề bài. Nếu không tồn tại, in ra 0.
Input
1 6
Output:
6
- Solution:
Từ E:1->62 có quy luật: Chữ số cuối của E là: 0 4 7 -> 2^E chữ số cuối là: 1; Chữ số cuối của E là: 1 8 -> 2^E chữ số cuối là: 2; Chữ số cuối của E là: 5 -> 2^E chữ số cuối là: 3; Chữ số cuối của E là: 2 -> 2^E chữ số cuối là: 4; Chữ số cuối của E là: 9 -> 2^E chữ số cuối là: 5; Chữ số cuối của E là: 6 -> 2^E chữ số cuối là: 6; Chữ số cuối của E là: 3 -> 2^E chữ số cuối là: 8; Ngoài ra có một số TH trong [1,62] là: 46 56 -> 2^E chữ số cuối là: 7; 53 -> 2^E chữ số cuối là: 9;
- Code:
C++:
https://ideone.com/IAe7nk
#include <iostream>
using namespace std;
int valueS (int a)
{
switch (a)
{
case 0:
case 4:
case 7:
return 1;
case 1:
case 8:
return 2;
case 5:
return 3;
case 2:
return 4;
case 9:
return 5;
case 6:
return 6;
case 3:
return 8;
}
}
int main ()
{
int A, B;
cin>>A>>B;
int kt=0, vS;
for (int i=A+1; i<=62; i++)
{
if (i==46 || i==56) vS=7;
else if (i==53) vS==9;
else
{
int cs=i%10;
vS=valueS(cs);
}
if (vS==B)
{
kt=1;
cout<<i;
return 0;
}
}
cout<<"0";
return 0;
}