火星人的计数规则里只有a,b,c,d四个字母,计数规则从小到大是 a,b,c,d,aa,ab,ac,ad,ba,……。
给出来由a,b,c,d四种字母组成的火星数字,算出该数字是第几个(从1开始)。
#include<stdio.h>
#include<string.h>
#include<math.h>
int p(int x)
{
int sum=1,i;
for(i=1;i<=x;i++)
sum=(sum*4)%10000007;
return sum;
}
int f(char a)
{
if(a=='a')
return 1;
if(a=='b')
return 2;
if(a=='c')
return 3;
if(a=='d')
return 4;
}
int main()
{
int t,l,i,sum;
char a[100];
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%s",a);
l=strlen(a);
for(i=0;i<l;i++)
sum=(sum+p(l-i-1)*f(a[i]))%10000007;
printf("%d\n",sum%10000007);
}
return 0;
}
#include<string.h>
#include<math.h>
int p(int x)
{
int sum=1,i;
for(i=1;i<=x;i++)
sum=(sum*4)%10000007;
return sum;
}
int f(char a)
{
if(a=='a')
return 1;
if(a=='b')
return 2;
if(a=='c')
return 3;
if(a=='d')
return 4;
}
int main()
{
int t,l,i,sum;
char a[100];
scanf("%d",&t);
while(t--)
{
sum=0;
scanf("%s",a);
l=strlen(a);
for(i=0;i<l;i++)
sum=(sum+p(l-i-1)*f(a[i]))%10000007;
printf("%d\n",sum%10000007);
}
return 0;
}