您的位置:首页 > 理论基础 > 计算机网络

http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=2502&cid=1122

2012-12-08 18:11 411 查看
火星计数法

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐