ccfcsp_202112-3 登机牌条码

只过掉了s=-1
题目链接


#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1000;

vector<int> nums;
vector<int> res;
int w, s;
char str[3*N];
int main()
{
	scanf("%d%d", &w, &s);
	scanf("%s", str);
	int prest = 0; // 0大写,1小写,2数字 
	for(int i = 0; i < strlen(str); i++)
	{
		char c = str[i];
		if(c >= 'A' && c <= 'Z')
		{
			if(prest != 0)
			{
				if(prest == 1)  // 小写到大写 
				{
					nums.push_back(28);
					nums.push_back(28);
				}
				else  // 数字到大写 
				{
					nums.push_back(28);
				}
				prest = 0;
			}
			nums.push_back(c - 'A');
		}
		else if(c >= 'a' && c <= 'z')
		{
			if(prest != 1) // 到小写 
			{
				nums.push_back(27);
				prest = 1;
			}
			nums.push_back(c - 'a');
			
		}
		else // 数字 
		{
			if(prest != 2) // 到数字 
			{
				nums.push_back(28);
				prest = 2;
			}
			nums.push_back(c - '0');
		}
	}
	
	if(nums.size() % 2 != 0) nums.push_back(29);
	
	int pre = 0;
	for(int i = 0; i < nums.size(); i++)
	{
		if(i % 2 == 1) //  1  3  5
		{
			res.push_back(pre * 30 + nums[i]);
		}
		pre = nums[i];
	}
	
	if(s == -1)
	{
		
		while((res.size() + 1) % w != 0) res.push_back(900);
		
		printf("%d\n", res.size() + 1);
		for(int i = 0 ; i < res.size(); i++)
		{
			if(i != res.size()) printf("%d\n", res[i]);
			else			    printf("%d", res[i]);
		}
//		for(auto t : res)
//		{
//			printf("%d\n", t);
//		}
	}

	return 0;
} 



posted @ 2022-03-03 22:03  VanHope  阅读(105)  评论(0编辑  收藏  举报