Link Sub: http://www.spoj.com/PTIT/problems/PTIT013K/
Người Gửi: Sai
- Problem:
Số nguyên hệ cơ số ACM là những số nguyên thông thường sử dụng các ký hiệu từ 0,1,…,9 làm ký hiệu hệ đếm (ví dụ số 719ACM). Nguyên tắc chung để đổi một số A = (aN, aN-1, …,a1) ở hệ cơ số ACM sang số ở hệ cơ số 10 được thực hiện như sau:
K10 = sum ai * i!
trong đó ai chữ số tại vị trí thứ i của hệ cơ số ACM.
Ví dụ: A = 719ACM = 9.(1!) + 1*(2!) + 7.(3!) = 5310
Input
Dữ liệu vào gồm nhiều bộ dữ liệu tương ứng với nhiều test. Dòng đầu tiên chứa một số nguyên không lớn hơn 100 là số lượng các bộ dữ liệu.
Mỗi bộ dữ liệu viết trên một dòng một số nhỏ hơn 2^32 là các số ở hệ cơ số ACM.
Output
Với mỗi bộ dữ liệu, ghi ra trên một dòng một số trong hệ cơ số 10 được chuyển đổi tương ứng với dữ liệu vào.
Example:
Với mỗi bộ dữ liệu, ghi ra trên một dòng một số trong hệ cơ số 10 được chuyển đổi tương ứng với dữ liệu vào.
Input
6
719
1
15
110
102
8
Output:
53
1
7
8
8
8
- Solution:
Nhập vào là một string và tính toán theo yêu cầu. (Chú ý: Char_Number->int: (int)=char-'0')
- Code:
C++:
https://ideone.com/B1MnqO
#include <iostream>
using namespace std;
long giaithua (int a)
{
long t=1;
for (int i=1; i<=a; i++) t*=i;
return t;
}
int main ()
{
//IN;
int t;
cin>>t;
string n;
for (int i=1; i<=t; i++)
{
cin>>n;
//OUT;
int len = n.length();
long long S=0;
for (int i=len-1; i>=0; i--)
{
int so = n[i]-'0';
S+=(so*giaithua(len-i));
}
cout<<S<<endl;
}
return 0;
}