平衡三进制1 | ||||||||||||||||||||||||||
Acceteped : 17 | Submit : 41 | |||||||||||||||||||||||||
Time Limit : 1000 MS | Memory Limit : 65536 KB | |||||||||||||||||||||||||
Description | ||||||||||||||||||||||||||
题目描述平衡三进制分别使用字符'-','0','1'表示-1,0,1。下表表示从0到10的十进制数对应的平衡三进制的值。
输入第一行是一个整数N,表示样例的个数。以后每行一个平衡三进制的字符串,保证其转换成的整数可以用32-bit的整数表示,且全为非负整数。 输出每行输出一个样例的结果。 样例输入8 0 1 1- 1--- 1-01 1000 1-1-1 1-0-1-1-1-1 样例输出0 1 2 14 19 27 61 37726 |
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
char s[1000];
int a,b,i,c;
cin>>a;
while(a--)
{
c=0;
cin>>s;
b=strlen(s);
for(i=0;i<b;i++)
{
if(s[i]=='-') c=c-(int)pow((double)3,1.0*(b-1-i));
else if(s[i]=='1') c+=(int)pow((double)3,(b-1-i)*1.0);
else c=c+0;
}
cout<<c<<endl;
}
return 0;
}