CF897C Nephren gives a riddle
2024-08-30 19:28:30
思路:
递归。
比赛的时候脑抽了len[]没算够,wa了几次。
实现:
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const string s = "What are you doing at the end of the world? Are you busy? Will you save us?";
const string t = "What are you doing while sending \"";
const string v = "\"? Are you busy? Will you send \"";
const ll len_s = s.length();
const ll len_t = t.length();
const ll len_v = v.length();
ll len[];
char dfs(ll n, ll k)
{
if (n == )
{
if (k >= && k <= len_s) return s[k - ];
else return '.';
}
else if (n >= )
{
if (k <= len_t) return t[k - ];
return dfs(n - , k - len_t);
}
else
{
if (k <= len_t) return t[k - ];
else if (k > len_t && k <= len_t + len[n - ])
return dfs(n - , k - len_t);
else if (k > len_t + len[n - ] && k <= len_t + len[n - ] + len_v)
return v[k - len_t - len[n - ] - ];
else if (k > len_t + len[n - ] + len_v && k <= len_t + * len[n - ] + len_v)
return dfs(n - , k - len_t - len[n - ] - len_v);
else if (k == len_t + * len[n - ] + len_v + )
return '\"';
else if (k == len_t + * len[n - ] + len_v + )
return '?';
else return '.';
}
}
int main()
{
len[] = (ll)len_s;
for (int i = ; i <= ; i++)
{
len[i] = len[i - ] * + len_t + len_v + ;
}
ll q, n, k;
cin >> q;
while (q--)
{
cin >> n >> k;
cout << dfs(n, k);
}
return ;
}
最新文章
- BZOJ 1692: [Usaco2007 Dec]队列变换 [后缀数组 贪心]
- 第五次团队作业——第一次项目冲刺——Alpha版本
- SQLServer中的页如何影响数据库性能 (转)
- parse output
- HMAC-MD5算法原理及实现
- jquery easyui datagrid使用参考
- 在Linux环境下安装和配置phpmyadmin
- jQuery学习教程(3)
- HW5.34
- Tomcat 集群
- js方法的命名不能使用表单元素的名称或ID
- (转)基于企业级证书的IOS应用打包升级功能介绍
- centos6安装vncserver实现图形化访问
- box-sizing的不同属性值间的区别
- day17
- tiny4412 --uboot移植(1)
- js实现截取或查找字符串中的子字符串
- kali linux中文输入法
- Docker三剑客之Docker Compose
- (转)在GitHub多个帐号上添加SSH公钥