BCMATHP - Lũy thừa 2

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
         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.
Input
* 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:
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;
}


JAVA:


Share this

Related Posts

Previous
Next Post »