人麻了,求捞
查看原帖
人麻了,求捞
580339
Cheney__22楼主2022/4/17 16:01

麻了鸭,写了一大堆就10分,求大佬帮我看看哪里错了QAQ

#include <bits/stdc++.h>
using namespace std;
string Number; 
int Each[102];
int flag;//用于储存x所在位置(应分为在最后一位和不在最后一位两种) 
int len;
int Way;//表示处理方法 
int Judger(int position)//position:表示读入的位置
{
	if (position == len)//如果等于最后一位 
		return 1;
	else if (position != len )
		return 2 ;
} 
int Change_qumo(int x)//x待取模数字
{
	x=x*9;
	x=x%10;
	return x;
 } 
int Sum_each(int a)//超过10的处理(下属于Change函数) 
{//现在a是肯定大于10小于20的,所以我们需要将a的各个数位单独取出来
	int gewei,shiwei;
	shiwei = ( a / 10 ) % 10; 
	gewei = a % 10 ; 
	return ( gewei + shiwei );
}
void Get_each(string a,int length)//对于读入的卡号进行取出每一位数字处理 
{
	for (int i=0;i<=length-1;i++)
	{
		if (a[i] == 'x')
		{
			flag = i+1;
			Way = Judger(flag);//将判断的结果储存到Way中(1:在最后一位 2:不在) 
			continue ;
		}
		Each[i+1] = int (a[i])-48;
	}
	
} 
int Change_2()//大题思路:和Change_1基本一致,但最后判断的时候需要一个一个穷举 
{
	int sum,temp;
	int panduan ;
	int result;
	for(int i=len-1;i>=1;i-=2)//从倒数第二位开始,累加2倍当前数位的数位和 
	{
		if (i == flag)
		{
			panduan = 1;
			continue;
		}
		temp = Each[i] * 2;
		if (temp>=10)	
			sum += Sum_each(temp);
		else 
			sum += temp;
	}	
	for(int i=len-2;i>=1;i-=2)
	{
		if (i == flag)
		{
			panduan = 2; 
			continue;
		}
		sum+=Each[i];		
	}
	if (panduan == 1)
	{
		int a;
		int b = sum;
		int temp_ans;

		for (int i=0;i<=9;i++)
		{
			b = sum;
			a=Sum_each(i);
			b +=a;
			temp_ans = Change_qumo(b);
			if (temp_ans == Each[len])
				result = 1;
			else if (i==9&&temp_ans!=Each[len])
				result = 2;
			else 
				continue;
		}
	}
	if (panduan == 2)
	{
		int a;
		int b = sum;
		int temp_ans;

		for (int i=0;i<=9;i++)
		{
			b = sum;
			a= i;
			b +=a;
			temp_ans = Change_qumo(b);
			if (temp_ans == Each[len])
				result = 1;
			else if (i==9&&temp_ans!=Each[len])
				result = 2;
			else 
				continue;
		}
	}
		
}
int Change_1()//在最后一位时 计算所有数字经过处理后得到的结果(已经取模处理) 
{
	int sum,temp;
	for(int i=len-1;i>=1;i-=2)//从倒数第二位开始,累加2倍当前数位的数位和 
	{
		temp = Each[i] * 2;
		if (temp>=10)
			sum += Sum_each(temp);	
		else 
			sum += temp;
	}	
	for(int i=len-2;i>=1;i-=2)
		sum+=Each[i];
	int a = Change_qumo(sum);
	return a;
}

int panduan()
{
	int a;
	if (Way == 1)
		 a = Change_1();
	else if (Way == 2)
		 a = Change_2();
	return a;//返回得出的答案 
 } 
int main ()
{
	cin>>len;
	cin>>Number;
	Get_each(Number,len);
	int ans = panduan ();
	cout<<ans;
} 
2022/4/17 16:01
加载中...