火星计数法
Time Limit: 1000MS Memory limit: 65536K
题目描述
火星人的计数规则里只有a,b,c,d四个字母,计数规则从小到大是 a,b,c,d,aa,ab,ac,ad,ba,……。
给出来由a,b,c,d四种字母组成的火星数字,算出该数字是第几个(从1开始)。
输入
第一行输入一个数T代表测试用例组数(T<=200),接下来T组测试用例,每组测试数据为一个火星数字(长度小于100)。
输出
对于每组测试用例,输出该火星数字代表多少(结果对10000007取模)。每行输出一个结果。
示例输入
2
a
ab
示例输出
1
6
#include<stdio.h>
#include<string.h>
int pp(int x)
{
int sum=1;
for(int i=0;i<x;i++)
{
sum*=4;
sum=sum%10000007;
}
return sum;
}
int main()
{
int test;
char a[105];
scanf("%d",&test);
while(test--)
{
scanf("%s",a);
int len=strlen(a);
int ans=0;
for(int i=0;i<len;i++)
{
ans+=(a[i]-'a'+1)*pp(len-1-i);
ans=ans%10000007;
}
printf("%d\n",ans);
}
return 0;
}