1570. 【基础赛】挑战(challenge)

47 篇文章 0 订阅
28 篇文章 0 订阅

1570. 【基础赛】挑战(challenge)

(Input: challenge.in, Output: challenge.out)
题目描述

Introl 组织了一场大挑战赛,并准备了丰厚的奖品,他给了挑战者每人一个加密之后的密码,并给了你加密的规则,请你还原它获得正确的密码拿到奖品。

加密规则如下:

对于任意字符串 S,将其中的每一个数字元素 num 都变换成 num+i(其中 i 是该字符的位置,且规定字符串的第一个字符位置为 1 )如果结果大于 9,只保留个位数字。之后将其中的大写字母变成小写字母,将小写字母变成大写字母。

输入

从文件 challenge.in 中读入数据。

第一行输入一个正整数 N ,表示字符串的长度。

第二行输入加密之后的字符串 S 。

输出

输出到文件 challenge.out 中。

输出解密之后的字符串 S′。

输入
10
Xyi2NT7810
输出
xYI8nt0020
数据范围限制

对于30% 的数据,1≤N≤10。

对于100% 的数据,1≤N≤1000。

思路:

题目要求解密,大小写字母相差32,相相加相减即可,而数字要判断他的位数,再减去结果%10如果小于0,+10即可

#include<bits/stdc++.h>//头文件 
using namespace std;
char a[10000];//加密后的字符串 
int n;//长度 
int main()
{
	freopen("challenge.in","r",stdin);//文件输入 
	freopen("challenge.out","w",stdout);//文件输出 
	scanf("%d\n%s",&n,a);//输入 
	for(int i=0;i<n;i++)//循环每个字符 
	{
		if(a[i]>='a'&&a[i]<='z')//小写转大写 
		{
			a[i]-=32;//转置 
			continue;//跳过后续语句,回到上面 
		}
		if(a[i]>='A'&&a[i]<='Z')//大写转小写 
		{
			a[i]+=32;//转置
			continue;//跳过后续语句,回到上面 
		}
		if(a[i]>='0'&&a[i]<='9')//数字解密 
		{
			a[i]=int(a[i]-'0');//变为数字(整形) 
			a[i]=((a[i]-1-i)%10+10)%10;//减对应的编号mod10因为有可能n>10 
			a[i]=a[i]+'0';//变为字符类数字 
			continue;//跳过后续语句,回到上面 
		}
	}
	printf("%s",a);//输出加密前的字符串 
}

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
acme.client.ClientV2.answer_challenge() 是一个函数,用于回答一个验证挑战challenge)。 具体来说,当你向 ACME 服务器申请一个证书时,服务器会向你发送一个或多个验证挑战,以确保你拥有域名的控制权。你需要回答这些挑战,才能得到证书。 该函数的参数如下: - challenge (acme.challenges.Challenge):要回答的验证挑战对象。 - response (Union[acme.challenges.ChallengeResponse, bytes, str]):回答验证挑战的响应。这个参数的类型取决于挑战的类型,可以是 ChallengeResponse 对象、bytes 对象或字符串。 - max_retries (int):最大重试次数。如果回答失败,则会进行重试,最多重试 max_retries 次,默认为 3 次。 该函数的返回值是一个 acme.messages.ChallengeResponse 类型的对象,表示回答挑战的结果。 下面是一个例子,演示如何使用该函数回答 HTTP-01 验证挑战: ```python import acme import acme.client import acme.challenges import acme.messages # 创建 ACME 客户端 client = acme.client.ClientV2('https://acme-staging-v02.api.letsencrypt.org/directory') # 获取 HTTP-01 验证挑战 authzr = client.request_domain_challenges('example.com') http_challenge = [c for c in authzr.body.challenges if isinstance(c.chall, acme.challenges.HTTP01)][0] # 下面的代码需要你在 example.com 的网站根目录下创建一个名为 ".well-known/acme-challenge" 的目录,并将以下内容写入名为 "${http_challenge.token}" 的文件中 response_content = http_challenge.validation.encode('utf-8') response_path = f'.well-known/acme-challenge/{http_challenge.token}' with open(response_path, 'wb') as f: f.write(response_content) # 回答验证挑战 response = acme.challenges.HTTP01Response(validation=http_challenge.validation) result = client.answer_challenge(http_challenge, response) # 删除临时文件 os.remove(response_path) ``` 在这个例子中,我们首先创建了一个 ACME 客户端,并使用它向 ACME 服务器申请 example.com 的证书。服务器返回一个授权对象(Authorization),其中包含一个或多个验证挑战。我们从中找到了 HTTP-01 验证挑战,并将 challenge.validation 的内容写入了一个临时文件中。然后,我们创建了一个 HTTP01Response 对象,将其作为参数传递给 answer_challenge() 函数,回答了验证挑战。最后,我们删除了临时文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值