C语言,洛谷题:你的飞碟在这

C语言,洛谷题:你的飞碟在这_第1张图片

 文中要把字母A对应到1,Z对应到26,这时候就要用上ASCII表了。A对应的ASCII码值是65,要让A对应1,只要将A减去64,后面的字母也是一样的只要减去64,就能对应其26字母中的顺序。

要存储字符串对应的每个元素的数字的乘积,可以先创建一个字符数组,再用循环的方式进行储存乘积。循环的次数要根据字符串的长度来决定,要用strlen求出两个字符数组的长度,当作各自的循环次数。

每次存储乘积的变量只要乘以相应字符减去64,最终便可以获得最后的数字。

最终让s1和s2都模上一个47,判断模上47后两者的值是否相等。相等则输出GO,不相等则输出STAY。

#include 
#include  
int main()
{
	char arr[7] = { 0 };
	char str[7] = { 0 };
	scanf("%s", arr);
	scanf("%s", str);
	int m = strlen(arr);
	int n = strlen(str);
	int s1 = 1;
	int s2 = 1;
	int i = 0;
	for (i = 0; i < m; i++)
	{
		s1 *= (arr[i] - 64);
	}
	int j = 0;
	for (j = 0; j < n; j++)
	{
		s2 *= (str[j] - 64);
	}
	int m1 = s1 % 47;
	int m2 = s2 % 47;
	if (m1 == m2)
	{
		printf("GO");
	}
	else
	{
		printf("STAY");
	}
	return 0;
}

你可能感兴趣的:(算法)