Fortun e Test

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 as
1416. As it is too large ,we take it mod 101 as ours fortune worth. S o abd has only 2 RP. Now I give you
a 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 follows
consists of one lines. each case contains only one string s specifying a person ’ s name, which only
contains 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注