CF94A Restoring Password 题解

简要思路:

使用 cin.getline 函数读入第一行的原文,用 80 次循环来把它分割成 8 段,存储起来。

接下来再用 scanf 来输入每个数字所对应的字符串。

最后就可以两层循环来检查每一段字符串是否和某个数字所对应的字符串相等啦!

提示:

检查字符串相等可以用 cstring 头文件里的 strcmp 函数来检查,如果返回值为 0 就代表两个字符串相等。

完整AC代码:

#include<cstdio>
#include<cstring>	// strcmp 需要调用 cstring 库 
#include<iostream>	// cin 需要调用 iostream 库
using namespace std;

struct sd{
	char s[20];		//使用结构体存储字符串,更加方便。
}num[20],st[20];	// num 代表每一个数字所代表的字符串, st 储存分段后得到的小字符串 
char str[100];		//第一行所输入的字符串 

int main()
{
	cin.getline(str,100);	//使用 cin.getline 函数读入一整行 
	for(int i=0;i<80;i++)
		st[i/10].s[i%10]=str[i];	//将字符串分段存储 
	for(int i=0;i<=9;i++)
		scanf("%s",num[i].s);		//输入每个数所对应的字符串 
	for(int i=0;i<8;i++)
		for(int j=0;j<=9;j++)				//两层循环检查字符串相等 
			if(strcmp(st[i].s,num[j].s)==0)	//用 strcmp 函数检查相等,返回0代表两个字符串完全相等 
				printf("%d",j);				//如果相等,则输出所对应的数 
	return 0;
}

本文搬运自我的洛谷博客,原文于 \(2021\)\(10\)\(20\)\(20:25\) 撰写,是我初学 OI 半年后发布的第一篇题解,我记忆里是审核了三四遍,用了一个多月的时间才通过。

现在看来这篇题解不算是规范的:许多地方应该加 \(\KaTeX\) 的没有加、注释加的又太多了。但是当时的我完全不会 Markdown 或者 \(\LaTeX\),就这短短的一篇也是看着洛谷题解规范磕磕碰碰写出来的,可能题解审核志愿者也是看到我交了那么多次才同情我放我一马的吧。

posted @ 2025-08-25 16:59  Jerrycyx  阅读(7)  评论(0)    收藏  举报