Fortun e Test
时间: 1ms 内存:32M
描述:
A lot of people have played fortune Test(or called RP Test) before. Let ’ s create a new Test below.Suppose the worth of a=1, b=4,c=9 … and z=26^2. Then abc can describe as 149,and abd describe as1416. As it is too large ,we take it mod 101 as ours fortune worth. S o abd has only 2 RP. Now I give youa name, please tell me the worth of it.
输入:
The first line of the input contains the number of test cases in the file. Each test case that followsconsists of one lines. each case contains only one string s specifying a person ’ s name, which onlycontains lower-case .
输出:
For each test case, print a line contains the answer.
示例输入:
1
a
示例输出:
1
提示:
参考答案(内存最优[752]):
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int mod10(int x)
{
int a=1,i;
for(i=0;i<x;i++)
a=(a*10)%101;
return a;
}
int bit(char c)
{
if(c>'C')
{
if(c>'I')
return 3;
else
return 2;
}
else
return 1;
}
int main()
{
int i,j,k,l,len,n,t,sum;
int shu[1000];
char s[100];
scanf("%d",&t);
while(t--)
{
n=0;sum=0;
scanf("%s",s);
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]>='a')
s[i]-=32;
}
for(i=0,j=0;i<len;i++)
{
n=(s[i]-'A'+1)*(s[i]-'A'+1);
k=bit(s[i]);
j+=k;
for(l=1;l<=k;l++)
{
shu[j-l]=n%10;
n/=10;
}
}
for(i=j-1,k=0;i>=0;i--,k++)
sum+=(shu[i]*mod10(k))%101;
printf("%d\n",sum%101);
}
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int mod10(int x)
{
int a=1,i;
for(i=0;i<x;i++)
a=(a*10)%101;
return a;
}
int bit(char c)
{
if(c>'C')
{
if(c>'I')
return 3;
else
return 2;
}
else
return 1;
}
int main()
{
int i,j,k,l,len,n,t,sum;
int shu[1000];
char s[100];
scanf("%d",&t);
while(t--)
{
n=0;sum=0;
scanf("%s",s);
len=strlen(s);
for(i=0;i<len;i++)
{
if(s[i]>='a')
s[i]-=32;
}
for(i=0,j=0;i<len;i++)
{
n=(s[i]-'A'+1)*(s[i]-'A'+1);
k=bit(s[i]);
j+=k;
for(l=1;l<=k;l++)
{
shu[j-l]=n%10;
n/=10;
}
}
for(i=j-1,k=0;i>=0;i--,k++)
sum+=(shu[i]*mod10(k))%101;
printf("%d\n",sum%101);
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。