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